hdu 4080 Stammering Aliens 二分 hash
来源:互联网 发布:mysql key index 区别 编辑:程序博客网 时间:2024/05/17 05:09
POJ 3882 TLE 需后缀数组
------------
const int SEED = 13331;const int MAX_N = 50000 + 10;char s[MAX_N];struct HASH{ ULL H[MAX_N]; ULL XL[MAX_N]; int len; HASH(){} void build(char *s){ len=strlen(s); H[len]=0; XL[0]=1; for (int i=len-1;i>=0;i--){ H[i]=H[i+1]*SEED+s[i]; XL[len-i]=XL[len-i-1]*SEED; } } ULL hash(int i,int L){ return H[i]-H[i+L]*XL[L]; }}hs;int n,m;ULL a[MAX_N];int id[MAX_N];int idx;bool cmp(int x,int y){ if (a[x]==a[y]) return x<y; return a[x]<a[y];}bool C(int L) { int cnt=0,sum=1; idx=-1; for (int i=0;i+L<=n;i++) { a[cnt]=hs.hash(i,L); id[cnt++]=i; } sort(id,id+cnt,cmp); for (int i=1;i<cnt;i++) { if (a[id[i]]==a[id[i-1]]) { sum++; if (sum>=m) idx=max(idx,id[i]); } else sum=1; } return idx>=0;}int main(){ while (~scanf("%d",&m)) { if (m==0) break; scanf("%s",s); hs.build(s); n=strlen(s); if(m==1) { printf("%d %d\n",n,0); continue; } if(!C(1)) { printf("none\n"); continue; } int l=1,r=n; int ans=0; while (l<=r) { int mid=(l+r)>>1; if (C(mid)) { ans=mid; l=mid+1; } else r=mid-1; } C(ans); if (ans==0) printf("none\n"); else printf("%d %d\n",ans,idx); }return 0;}
------------
0 0
- hdu 4080 Stammering Aliens 二分 hash
- [后缀数组+二分] hdu 4080 Stammering Aliens
- HDU 4080 Stammering Aliens
- LA - 4513 - Stammering Aliens(Hash + 二分)
- UVALive 4513 Stammering Aliens hash+二分
- hdu4080 Stammering Aliens(二分+字符串hash)
- HDU 4080 UVaLive 4513 - Stammering Aliens (字符串hash)
- HDU 4080 Stammering Aliens (后缀数组 + 二分答案)
- HDU 4080 Stammering Aliens(后缀数组+二分)
- [HDU 4080] Stammering Aliens (字符串哈希+二分)
- Stammering Aliens 【二分+哈希】
- UVALive 4513 Stammering Aliens (hash+二分 or 后缀数组)
- uvalive 4513 Stammering Aliens (基于Hash的LCP+二分)
- hdu 4080 Stammering Aliens - 后缀数组
- HDU 4080 Stammering Aliens(后缀数组)
- HDU 4080 Stammering Aliens && 后缀数组
- la4513 Stammering Aliens 字符串hash
- UVA - 12206 Stammering Aliens (hash)
- 【《jQuery实战》学习笔记01】第一章jQuery引荐
- 排序技术_各种算法原理 图解 代码实现
- J2EE的13个技术规范
- 苹果5港行和大陆行货的区别
- s是大于1的正整数的非空有限集合
- hdu 4080 Stammering Aliens 二分 hash
- 十步完全理解SQL
- zoj 1153 Tournament Seeding
- Python/Django/PycharmA安装及配置
- Solaris11配置Oracle RAC ASMDisk 以及运行root.sh注意事项
- CareerCup 2^i * 3^j * 5^k * 7^l
- 8.4 中断的悬起与解悬
- 黑马程序员学习笔记JAVA高级视频 IO输入输出字符流之Writer类
- POJ 3063 Sherlock Holmes 随机化