博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bzoj1014 外星人Prefix
阅读量:4952 次
发布时间:2019-06-11

本文共 1832 字,大约阅读时间需要 6 分钟。

和上一篇题目几乎一样,不过还是这道题良心!bzoj好!poj慢到出*

splay大法好! 两次AC不卡常!

#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#include
#include
#include
#define N 400010#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;;){
w=sz[ch[x][0]]+1; if(w==k) return x; if(k
=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]];}char c[100010],o[3];int main(){
scanf("%s%d",c,&n); m=strlen(c); rt=newnode(0); for(int i=1;i<100010;++i) bas[i]=bas[i-1]*131; for(int i=0;i
>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/9477182.html

你可能感兴趣的文章
泛型 T的定义<1>
查看>>
thinkphp dispaly和fetch的区别
查看>>
08号团队-团队任务5:项目总结会
查看>>
mybatis 插入数据 在没有commit时 获取主键id
查看>>
SQL2005 删除空白行null
查看>>
lightoj 1030 概率dp
查看>>
重新注册.NET
查看>>
Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
查看>>
Vagrant入门
查看>>
python and 我爱自然语言处理
查看>>
第3讲:导入表的定位和读取操作
查看>>
echarts-柱状图绘制
查看>>
mysql备份与恢复
查看>>
混沌分形之迭代函数系统(IFS)
查看>>
VS2013试用期结束后如何激活
查看>>
边框圆角Css
查看>>
SQL 能做什么?
查看>>
java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例
查看>>
使用Busybox制作根文件系统
查看>>
Ubuntu候选栏乱码
查看>>