hdu 4552 怪盗基德的挑战书 (基于hash的LCP)
来源:互联网 发布:cpu淘宝e5水多深 编辑:程序博客网 时间:2024/06/05 09:06
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4552
题意:
分析:若某一后缀S与文本串T的LCP等于x,那么此后缀对答案的贡献为x,枚举后缀即可。
代码:
#include <iostream>#include <cstring>#include <cstdio>using namespace std;typedef unsigned long long ULL;const int maxn = 1e5+6;const int seed = 131;ULL H[maxn],X[maxn];int Len;char str[maxn];void Init(){H[Len]=0;for(int i=Len-1;i>=0;i--)H[i]=H[i+1]*seed+str[i]-'a';X[0]=1;for(int i=1;i<Len;i++)X[i]=X[i-1]*seed;}ULL GetHash(int i,int L){return H[i]-H[i+L]*X[L];}int LCP(int a,int b,int lim){int ret=0,down=1,mid,up=lim;while(down<=up){mid=(down+up)>>1;if(GetHash(a,mid)==GetHash(b,mid)){down=mid+1;if(ret<mid)ret=mid;}elseup=mid-1;}return ret;}int main(){long long ans;while(scanf("%s",str)==1){Len=strlen(str);Init();ans=0;for(int i=Len-1;i>=0;i--)ans+=LCP(0,i,Len-i);printf("%I64d\n",ans%256);}return 0;}
0 0
- hdu 4552 怪盗基德的挑战书 (基于hash的LCP)
- hdu 4552 怪盗基德的挑战书
- hdu 4552 怪盗基德的挑战书
- hdu 4552 怪盗基德的挑战书
- HDU-4552 怪盗基德的挑战书
- Hdu 4552 怪盗基德的挑战书
- HDU-4552-怪盗基德的挑战书
- [hdu 4552] 怪盗基德的挑战书
- hdu 4691 Front compression (基于hash的LCP)
- HDU - 4552 怪盗基德的挑战书 (后缀数组)
- 【HDU】4552 怪盗基德的挑战书 【后缀数组】
- hdu 4552 怪盗基德的挑战书 (kmp+dp)
- HDU 4552 怪盗基德的挑战书 【EXKMP】
- 【HDU 4552】怪盗基德的挑战书(kmp)
- hdu 4452 怪盗基德的挑战书
- HDU 4552 怪盗基德的挑战书(很巧妙的暴力)
- HDU 4552 怪盗基德的挑战书 (后缀数组,4级)
- [后缀数组+RMQ] hdu 4552 怪盗基德的挑战书
- TSM恢复ORACLE数据库速度极慢的问题。
- Unity3D笔记第二十天——3D图形学(网格基础)
- 网游服务器优化
- Harris角点检测
- 谈谈 模式和运营
- hdu 4552 怪盗基德的挑战书 (基于hash的LCP)
- Unity3D笔记第二十一天——游戏特效处理,贴图材质与Shader
- 1101. Quick Sort (25)
- javascript 与 flex 通信
- 可点击的string
- Unity3D笔记第二十二天——数据存储,资源管理和加载
- 回调?
- jQuery.off() 函数详解
- Unity3D笔记第二十三天——Unity网络