LA 4513
来源:互联网 发布:网络神剧2015 编辑:程序博客网 时间:2024/04/28 15:52
题目链接
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 40000 + 10;const int x = 123;int n, m, pos;unsigned long long H[maxn], xp[maxn];unsigned long long Hash[maxn];int Rank[maxn];int cmp(const int& a, const int& b){ return Hash[a] == Hash[b] ? a < b : Hash[a] < Hash[b];}int possible(int L){ int c = 0; pos = -1; for(int i = 0; i < n - L + 1; i++) { Rank[i] = i; Hash[i] = H[i] - H[i + L] * xp[L]; } sort(Rank, Rank + n - L + 1, cmp); for(int i = 0; i < n - L + 1; i++) { if(i == 0 || Hash[Rank[i]] != Hash[Rank[i - 1]]) c = 0; if(++c >= m) pos = max(pos, Rank[i]); } //printf("L : %d pos : %d\n", L, pos); return pos >= 0;}char s[maxn];int main(){ while(~scanf("%d", &m) && m) { scanf("%s", s); n = strlen(s); H[n] = 0; for(int i = n - 1; i >= 0; i--) H[i] = H[i + 1] * x + (s[i] - 'a'); xp[0] = 1; for(int i = 1; i <= n; i++) xp[i] = xp[i - 1] * x; if(!possible(1)) printf("none\n"); else { int L = 1, R = n + 1; while(L + 1 < R) { int mid = (L + R) >> 1; if(possible(mid)) L = mid; else R = mid; } possible(L); printf("%d %d\n", L, pos); } } return 0;}/*2babab*/
0 0
- LA 4513
- LA 4513 Stammering Aliens
- LA 4513 - Stammering Aliens
- LA 4513 Stammering Aliens
- LA 4513 Stammering Aliens
- LA 4513 Stammering Aliens
- la la la, la la la
- LA - 4513 - Stammering Aliens(Hash + 二分)
- LA 4513 Stammering Aliens 字符串hash
- LA 4513 hash表示字符串后缀
- la 4513 Stammering Aliens 字符串哈希
- LA 4513 Stammering Aliens(字符串hash)
- UVALive 4513 (LA 4513) Stammering Aliens 后缀数组 或 hash
- 后缀数组,LCP(Stammering Aliens,LA 4513)
- LA 3942
- LA 4670
- LA 3135
- LA 3644
- HDU - 1166 敌兵布阵(线段树,单点修改)
- 【Android UI设计与开发】第08期:底部菜单栏(三)Fragment+FragmentTabHost实现仿新浪微博底部菜单栏
- leetcode笔记:Binary Tree Preorder Traversal
- 不用css,实现带细线灰色边框的表格
- 6.Oracle数据库SQL开发之 SELECT、WHERE以及行标识等
- LA 4513
- 离线Tarjan lca
- 7.Oracle数据库SQL开发之 算术运算
- HDU - 1754 I Hate It(线段树,单点修改)
- 8.Oracle数据库SQL开发之 使用列别名
- csb
- 在mysql导入sql报错:USING BTREE
- 9.Oracle数据库SQL开发之 连接操作合并列的输出结果
- mysql 学习记录(十)--存储过程