POJ2774(二分+哈希)
来源:互联网 发布:打豆豆小游戏优化版 编辑:程序博客网 时间:2024/06/08 13:44
题意:求最长公共子串
参考http://www.cnblogs.com/Penn000/p/5852483.html
const ULL seed=131;ULL h1[N],h2[N],ts[N];char s1[N],s2[N];ULL a[N];int len1,len2;ULL gethash(ULL *h,int l,int r){ return h[r]-ts[r-l]*h[l];}bool ok(int len){ int cnt=0; for(int i=len;i<=len1;++i){ a[cnt++]=gethash(h1,i-len,i); } sort(a,a+cnt); for(int i=len;i<=len2;++i){ ULL now=gethash(h2,i-len,i); if(binary_search(a,a+cnt,now))return true; } return false;}int main(){ ts[0]=1; for(int i=1;i<=N;++i)ts[i]=ts[i-1]*seed; while(~sf(" %s%s",s1,s2)){ len1=strlen(s1); len2=strlen(s2); h1[0]=0; for(int i=0;i<len1;++i) h1[i+1]=h1[i]*seed+s1[i]; h2[0]=0; for(int i=0;i<len2;++i) h2[i+1]=h2[i]*seed+s2[i]; int l=0,r=max(len1,len2); while(l<r){ int mid=(l+r)>>1; if(ok(mid+1))l=mid+1; else r=mid; } pf("%d\n",l); }}
阅读全文
0 0
- POJ2774(二分+哈希)
- poj2774
- poj2774
- POJ2774
- poj2774
- hdu1403 poj2774(后缀数组)
- poj2774(后缀数组)
- POJ2774--Long Long Message
- poj2774 Long Long Message
- 后缀数组poj2774 poj3415
- [POJ2774]木材加工
- 后缀数组poj2774
- POJ2774 字符串HASH
- poj2774 后缀数组
- 【poj2774】 Long Long Message
- poj2774 Long Long Message
- poj2774 Long Long Message
- POJ2774-Long Long Message
- 图中两个点之间的路线 -LintCode
- 注解Annotation
- ViewPager以及ViewFlipper的简单应用
- 利用mybatis生成pojo,dao层,xml文件的相关配置
- 非极大值抑制原理
- POJ2774(二分+哈希)
- 从小白开始入门python+tensorflow+cnn做人脸性别识别(一)
- hdu2774(后缀数组 最长公共子串)Long Long Message
- 关于递归算法的几个例子(C语言)
- PAT1074——Reversing Linked List
- spring mvc controller4中配置方式
- 【Java多线程】多线程案例:使用多线程向用户推送短信
- 进程状态(含状态变迁图)
- 采用C++随机数的生成