Poj2758 Checking the Text

题目传送门

经典的数据结构维护字符串哈希

这里用了很慢很慢的splay各种T(也可能是死循环)

不过没办法因为会写splay的能力还是要有的

#pragma GCC opitmize("O3")
#pragma G++ opitmize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 100010
#define LL long long
#define son(x) (x==ch[f[x]][1]) 
using namespace std;
LL h[N],bas[N]={1};
int f[N],ch[N][2],sz[N],v[N];
int n,m,cnt=0,rt=0,q;
inline int newnode(int k){++cnt; h[cnt]=v[cnt]=k; sz[cnt]=1;return cnt;
}
inline void ps(int x){ sz[x]=sz[ch[x][0]]+sz[ch[x][1]]+1;h[x]=(h[ch[x][0]]*131+v[x])*bas[sz[ch[x][1]]]+h[ch[x][1]];
}
inline void rot(int x){int p=f[x],g=f[p],d=son(x);ch[p][d]=ch[x][!d]; f[ch[p][d]]=p;ch[x][!d]=p; f[p]=x; f[x]=g;if(g) ch[g][p==ch[g][1]]=x; ps(p); ps(x);
}
inline void splay(int x,int r=0){for(int p;(p=f[x])!=r;rot(x))if(f[p]!=r && son(x)==son(p)) rot(p);if(!r) rt=x;
}
inline int select(int k,int x=rt){for(int w;x;){w=sz[ch[x][0]]+1;if(w==k) return x;if(k<w) x=ch[x][0];else k-=w,x=ch[x][1];}
}
inline int gRank(int k,int x=rt){int r=1;for(;x;){if(v[x]>=k) x=ch[x][0];else{ r+=sz[ch[x][0]]+1; x=ch[x][1]; }}return r;
}
inline int rank(int x){int r=sz[ch[x][0]]+1;for(;x;x=f[x])if(son(x)) r+=sz[ch[f[x]][0]]+1;return r;
}
inline void Llink(int x,int v){ f[ch[x][0]=v]=x; ps(x); }
inline void Rlink(int x,int v){ f[ch[x][1]=v]=x; ps(x); }
inline LL gH(int x,int len){splay(select(x-1));splay(select(x+len),rt);return h[ch[ch[rt][1]][0]];
}
int main(){char c[50010],o[3]; scanf("%s%d",c,&n); m=strlen(c); rt=newnode(0);for(int i=1;i<50100;++i) bas[i]=bas[i-1]*131;for(int i=0;i<m;++i){ Llink(newnode(c[i]),rt); rt=cnt; }Llink(newnode(0),rt); rt=cnt;for(int x,y;n--;){scanf("%s",o);if(*o=='I'){scanf("%s%d",o,&x);x=min(x,sz[rt]-1);splay(select(x)); splay(select(x+1),rt);Llink(ch[rt][1],newnode(*o));ps(rt);} else {scanf("%d%d",&x,&y); ++x; ++y;int a=rank(x),b=rank(y);if(x==y){printf("%d\n",sz[rt]-max(a,b));continue;}int l=0,r=sz[rt]-max(a,b);for(int M;l<r;){M=l+r+1>>1;if(gH(a,M)==gH(b,M)) l=M;else r=M-1;}printf("%d\n",l);}}
}

转载于:https://www.cnblogs.com/Extended-Ash/p/9477183.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学计算机专业独立显卡有必要吗,不玩游戏独立显卡有什么作用_如果不玩游戏需要选择独立显卡吗-系统城...

现在有些笔记本刚买来的时候会有自带的独立显卡和集成显卡&#xff0c;有些朋友在买了笔记本后并不想玩游戏&#xff0c;这时候他们就有了一个疑问不玩游戏独立显卡有什么作用呢&#xff1f;如果不玩游戏需要选择独立显卡吗&#xff1f;小编在这里就给大家带来电脑独立显卡的作…

编程书籍集

【1】OS &#xff08;1&#xff09;《深入理解计算机系统》 &#xff08;2&#xff09;《程序员的自我修养&#xff1a;链接、装载与库》 &#xff08;3&#xff09;《程序员修炼之道》 &#xff08;4&#xff09;《计算机程序的构造和解释》 【2】C &#xff08;1&#xff09;…

Spring JMS,消息自动转换,JMS模板

在我的一个项目中&#xff0c;我应该创建一个消息路由器&#xff0c;就像所有路由器都应该从一个主题中提取JMS消息并将其放入另一个主题中一样。 该消息本身是JMS文本消息&#xff0c;实际上包含XML消息。 收到消息后&#xff0c;我还应该添加一些其他数据来丰富消息。 我们不…

前端人英语学习的那点事儿

小时候英语学得不好&#xff0c;这个不能怪老师。后来自己想&#xff1a;反正以后我也不出国&#xff0c;加之学习方法不对&#xff0c;英语水平比较差劲、工作之后才发现&#xff0c;英语真是重要、第一手资料几乎都是英文的&#xff0c;很多前端书籍翻译得都挺那啥的&#xf…

课后作业-阅读任务-阅读提问-4

敏捷流程&#xff0c;感觉就像以前作业写不完还快开学了&#xff0c;然后一顿猛写:-)&#xff0c;那在实际编程中&#xff0c;是一开始就决定用敏捷流程&#xff1b;还是快到交付日期&#xff0c;大家加紧加班&#xff0c;赶工&#xff0c;自然而然就变成敏捷流程&#xff1f; …

大学物理质点动力学思维导图_生理学 | 思维导图

1.声明&#xff1a;第一部分的思维导图来源于网络&#xff0c;但是早就被传疯了。还是一句话&#xff0c;侵删。2.后面明显高清的思维导图是我自己画的,有版权.已经在公众号(id : 医学猿MIT)上传。下面来源&#xff1a;网络▲物质的跨膜转运▲肌细胞的收缩▲血液▲一级消除动力…

WB8使用说明-基础(引用)

1、静态引用链接&#xff1a; 通过设置如下属性来来静态引用CSS和JScssLinks : Array需要在页面中引用的css链接列表。该属性仅在首页或在iframe中运行的模块内有效&#xff0c;内置模块页面引用css请使用Wb.addLink方法。 jsLinks : Array需要在页面中引用的js链接列表。该属性…

jQuary总结11:jQuery插件封装---jQuery封装 手风琴 动画插件

完整代码下载点击我的GitHub: https://github.com/XingJYGo/jquery-accordion 1 手风琴的效果展示如下: 2 封装插件目录结构如下: 主要包括:HTML结构, CCS样式,JS文件以及jquary库. 3 插件封装步骤如下: 3-1首先,编写HTML静态结构: <div id"box"><ul><…

Spring MVC:表单处理卷。 2 –复选框处理

很难想象现代Web应用程序中没有表单复选框的情况。 在之前的一篇文章中&#xff0c;我写了有关Spring MVC中的表单处理的文章 &#xff0c;作为本系列文章的续篇&#xff0c;我将写有关Spring MVC表单的文章&#xff0c;尤其是关于复选框处理的文章 。 这篇文章将介绍标签的标准…

给你的博客换个装-园子换装指南

博客园有很多漂亮的皮肤&#xff0c;但总是有一些地方我不大喜欢&#xff0c;所以经过慎重考虑&#xff0c;我决定亲自动手换个装。本文将介绍博客园换装的一些基础&#xff08;不涉及标准皮肤的做法&#xff09;&#xff0c;如果你想让你的博客更炫&#xff0c;可以参考本文入…

表格过滤器_气缸选型其实并不复杂,知道这些再也不怕选错气缸(附计算表格)...

文/第e机械气动系统概述在介绍气缸之前我们先了解一下气动系统。气动控制技术在国民经济各个领域&#xff0c;最近这些年, 它与传感器技术、电子信息技术密切融合&#xff0c;发展成为包括控制、传动和检测等在内的自动化技术, 现在已发展成为自动化领域的重要组成部分。气动控…

java中equals()和==的区别

java中的数据类型 基础数据类型 基础数据类型有byte、short、char、int、long、float、double、bool、String。除了 String 会比较地址,其它的基础类型的比较,使用 和 equals() 两者都是比较值。 String类的equals()方法源码 1 public boolean equals(Object anObject) {2 …

判断字符串是否为正整数 浮点小数

/** * 判断字符串是否为数字(正整数和浮点数) * param str * return */public static boolean isNumeric(String str) { String reg "^[0-9](.[0-9])?$"; Pattern pattern Pattern.compile(reg); Matcher isNum pattern.matcher(str); if (!isNum.ma…

华为杯大学生计算机软件大赛,关于举办2018年西安电子科技大学程序设计网络赛暨第十六届“华为杯”大学生程序设计竞赛的通知...

各学院&#xff1a;程序设计是大学生运用计算机充分展示自己分析问题和解决问题能力的一个重要途径&#xff0c;对于培养大学生实践能力、团队意识、创新意识、顽强意志和综合素质具有显著作用和效果。为了推动这项创新性素质教育活动的广泛深入开展&#xff0c;扩大受益面&…

通过Spring Social发推StackExchange问​​题

1.简介 这是有关小型附属项目的第三篇也是最后一篇文章-该机器人自动在专用帐户上鸣叫来自各个Q&#xff06;A StackExchange网站上的问题&#xff08;文章末尾的完整列表&#xff09;。 第一篇文章讨论了为StackExchange REST API构建一个简单的客户端 。 在第二篇文章中&…

HTML语义化的理解

1、什么是HTML语义化&#xff1f; “语义化”指的是在需要更少的人类干预的情况下&#xff0c;能够研究和手机信息&#xff0c;让网页能够被机器理解&#xff0c;最终让人类受益。 语义化的目的就是让大家直观的认识标签&#xff08;markup&#xff09;和属性&#xff08;att…

乒乓球比赛赛程_10月5日至10月11日中央电视台直播录播乒乓球比赛安排

10月5日至10月11日这一周中央电视台居然没有播乒乓球比赛?全国乒乓球锦标赛从5日开始进行各单项比赛&#xff0c;7日进行混双决赛&#xff0c;9日进行男双决赛和女单决赛&#xff0c;10日进行女双决赛和男单决赛。场场都是精彩好看的比赛&#xff0c;中央电视台体育频道一场都…

集合实例(集合覆盖)

集合覆盖是一种优化求解问题&#xff0c;对很多组合数学和资源选择问题给出了很好的抽象模型。 问题如下&#xff1a;给定一个集合S&#xff0c;集合P由集合S的子集A1到An组成&#xff0c;集合C由集合P中的一个或多个子集组成。如果S中的每个成员都包含在C的至少一个子集中则称…

Drawwhile计算机软件,计算机程序设计、小女纸又怒编一程序、求鉴定、

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼srand(time(NULL));while (1){while (!kbhit()) //在没有按键的情况下,蛇自己移动身体{if (food.addFood 1) //需要出现新食物{food.x rand() % 400 60;food.y rand() % 350 60;//食物出现后必须在整格内才能让蛇吃到while (f…

python eval 用法

eval 功能&#xff1a;将字符串str当成有效的表达式来求值并返回计算结果。 语法&#xff1a; eval(source[, globals[, locals]]) -> value 参数&#xff1a; source&#xff1a;一个Python表达式或函数compile()返回的代码对象 globals&#xff1a;可选。 变量作用域&…