51Nod-1277-字符串中的最大值
2017-04-20 21:34
260 查看
ACM模版
描述
题解
用 kmp 处理一下获取一个 next 数组即可,然后递推一遍,O(n),简单快捷,完美!代码
#include <iostream> #include <cstring> using namespace std; const int MAXN = 1e5 + 10; char str[MAXN]; int len; int nt[MAXN]; int res[MAXN]; void getNext() { nt[0] = -1; int i = 0, j = -1; while (i <= len) { if (j == -1 || str[i] == str[j]) { nt[++i] = ++j; } else { j = nt[j]; } } } int main() { scanf("%s", str); len = (int)strlen(str); getNext(); for (int i = len; i >= 1; i--) { res[i]++; res[nt[i]] += res[i]; } long long ans = 0; for (long long i = 1; i <= len; i++) { ans = max(i * res[i], ans); } printf("%lld\n", ans); return 0; }
参考
《KMP算法》相关文章推荐
- 51nod 1277 1292字符串的最大值系列
- 51nod 1277 字符串中的最大值
- 51nod 1277 字符串中的最大值(kmp)
- 51nod 1277 B - 字符串中的最大值 【KMP+dp】
- 字符串中的最大值 51Nod - 1277[DP+KMP]
- 51Nod 1277 字符串中的最大值【Dp+set_next】
- 51Nod-1277-字符串中的最大值
- kmp-51nod 1277 字符串中的最大值
- BZOJ 3670: [Noi2014]动物园&&51nod 1277 字符串中的最大值
- 【Kmp求字符串前缀在字符串出现的次数】51nod 1277 字符串中的最大值
- 51Nod 1277 字符串中的最大值 KMP next数组经典应用
- 51nod-1277 字符串中的最大值(KMP)
- 51NOD 1277 字符串中的最大值 【拓展KMP】
- 51nod 1277 字符串中的最大值【KMP算法】【next树】
- 51nod 1277 字符串中的最大值 (kmp之next数组的理解) O(n)可过
- 51nod 1277 字符串中的最大值(KMP)
- 51Nod 1277 字符串中的最大值(KMP,裸题)
- [KMP next树] 51Nod 1277 字符串中的最大值
- 51Nod-1277 字符串中的最大值
- 51nod 1277 字符串中的最大值