UVA 4513
来源:互联网 发布:boundgods能从淘宝买吗 编辑:程序博客网 时间:2024/05/01 23:37
题目描述
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define N 40000 + 10#define x 123typedef unsigned long long LL;int m, len;LL xp[N], H[N];char s[N];LL V[N];LL mark;int pos;struct Haa{ LL v; int id;}Ha[N];int cmp(Haa a, Haa b){ return (a.v == b.v) ? (a.id < b.id) : (a.v < b.v);}void init(){ xp[0] = 1; for(int i = 1; i <= len; i++) xp[i] = xp[i - 1] * x; H[len] = 0; for(int i = len - 1; i >= 0; i--) H[i] = H[i + 1] * x + (s[i] - 'a');}bool Find(int L){ if(L > len) return false; pos = -1; int tmp = 0; for(int i = 0; i + L - 1 <= len - 1; i++) { Ha[i].id = i; Ha[i].v = H[i] - H[i + L] * xp[L]; } sort(Ha, Ha + len - L + 1, cmp);// cout<<"L is : "<<L<<" Hash is : ";// for(int i = 0; i <= len - L; i++) cout<<Ha[i].v<<" ";// cout<<endl; int num = 1; for(int i = 1; i <= len - L; i++) { if(Ha[i].v == Ha[i - 1].v) num++; else { if(num >= m && Ha[i - 1].id > pos) { pos = Ha[i - 1].id; } num = 1; } } if(num >= m && Ha[len - L].id > pos) { pos = Ha[len - L].id; } return pos >= 0;}int main(){ while(~scanf("%d", &m) && m) { scanf("%s", s); len = strlen(s); init(); Find(1); int l = 0, r = len + 1; while(l + 1 < r) { int mid = (l + r) >> 1; if(Find(mid)) l = mid; else r = mid; } if(l == 0) printf("none\n"); else { Find(l); printf("%d %d\n", l, pos); } } return 0;}/*3baaaababababbababbab11baaaababababbababbab3cccccc2babab0*/
0 0
- UVA 4513
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- javaWeb解决中文乱码问题
- 5 个免费的受欢迎的 SQLite 管理工具
- Enable zram&swap
- [andriod学习笔记] 视频播放器的开发
- Tomcat一闪而过 性能调优
- UVA 4513
- JNI了解
- android 文件夹
- 为什么要学习TypeScript
- org.json.JSONException:
- [算法系列之二]二叉树各种遍历
- CSDN的第一篇博文
- 面试经之一道淘汰85%面试者的百度开发者面试题
- [算法系列之一]堆排序