2946: [Poi2000]公共串 二分+hash
来源:互联网 发布:php防止sql注入代码 编辑:程序博客网 时间:2024/04/20 08:30
sb题WA了三遍卧槽。。。。
set忘记clear了。。
被各路SA&SAM虐成狗TAT,不会SAM路过。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include<set>#define ll unsigned long long #define base 233#define inf 1000000007using namespace std;int n,cnt,L,R=inf,ans;char s[6][2005];ll hash[6][2005];ll T[2005];inline ll gethash(int i,int l,int r){ return hash[i][r]-hash[i][l-1]*T[r-l+1];}set<ll> mp1,mp2;inline bool judge(int mid){ mp1.clear(); mp2.clear(); int l=strlen(s[1]+1); for (int i=1;i<=l-mid+1;i++) mp1.insert(gethash(1,i,i+mid-1)); for (int i=2;i<=n;i++) { int l=strlen(s[i]+1); for (int j=1;j<=l-mid+1;j++) { ll t=gethash(i,j,j+mid-1); if (mp1.find(t)!=mp1.end()) mp2.insert(t); } mp1=mp2; mp2.clear(); } return mp1.size();}int main(){ scanf("%d",&n); T[0]=1; for (int i=1;i<=2000;i++) T[i]=T[i-1]*base; for (int i=1;i<=n;i++) { scanf("%s",s[i]+1); int l=strlen(s[i]+1); R=min(R,l); for (int j=1;j<=l;j++) hash[i][j]=hash[i][j-1]*base+s[i][j]-'a'; } L=0; while (L<=R) { int mid=L+R>>1; if (judge(mid)) ans=mid,L=mid+1; else R=mid-1; } cout << ans; return 0;}
0 0
- 2946: [Poi2000]公共串 二分+hash
- 2946: [Poi2000]公共串 (hash+二分)
- 【BZOJ】【P2946】【Poi2000】【公共串】【题解】【hash】
- bzoj 2946: [Poi2000]公共串
- BZOJ 2946 [Poi2000]公共串
- bzoj2946 [Poi2000]公共串(SA+二分答案 同poj3450)
- BZOJ 2946 Poi2000 公共串 后缀自动机
- BZOJ 2946 [Poi2000]公共串 后缀数组
- 2946: [Poi2000]公共串|哈希|后缀数组
- 2946: [Poi2000]公共串 后缀数组
- 2946: [Poi2000]公共串 后缀自动机
- 【BZOJ 2946】[Poi2000]公共串 后缀数组
- bzoj 2946: [Poi2000]公共串 后缀自动机
- BZOJ 2946 [Poi2000]公共串 后缀自动机
- BZOJ 2946: [Poi2000]公共串 后缀数组
- 【POI2000】【BZOJ2946】公共串
- 【bzoj2946】[Poi2000]公共串
- [BZOJ2946][Poi2000]公共串
- JAVA学习笔记5--加载第三方jar包
- Bootstrap的图片轮播示例代码
- Structure and inference in annotated networks - note
- SSH中主键生成策略
- 协同过滤算法python实现简单入门详细注释
- 2946: [Poi2000]公共串 二分+hash
- find、grep、wc使用方法简单总结
- hdu 2842 Chinese Rings(矩阵递推)
- VS2012 scanf()运行通不过的时候,提示需要使用scanf_s()的解决办法。
- 线程池与cp命令的实现
- Android 异常解决 content.ActivityNotFoundException: Unable to find explicit activity class
- Unity Notes之协程(Coroutine)简析
- 【LeetCode OJ 242】Valid Anagram
- 路漫漫其修远兮吾将上下而求索