noi2015模板-后缀自动机
来源:互联网 发布:python 中英文对照 编辑:程序博客网 时间:2024/06/05 05:45
#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <algorithm>using namespace std;#define rep(i, l, r) for (int i = l; i <= r; i++)#define REP(i, l, r) for (int i = l; i >= r; i--)#define MAXN 200010inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch<'0' || ch>'9') {if (ch == '-') f = -1; ch = getchar();} while (ch>='0' && ch<='9') x = x*10 + ch - '0', ch = getchar(); return x*f;}struct SAM { struct Node { int ch[26], f, len; void init() { len = 0, f = -1; memset(ch, 0xff, sizeof(ch)); } } sn[MAXN]; int idx, last; void init() { idx = last = 0; sn[idx++].init(); } int newnode() { sn[idx].init(); return idx++; } void add(int c) { int end = newnode(), tmp = last; sn[end].len = sn[last].len + 1; while (tmp != -1 && sn[tmp].ch[c] == -1) sn[tmp].ch[c] = end, tmp = sn[tmp].f; if (tmp == -1) sn[end].f = 0; else { int nxt = sn[tmp].ch[c]; if (sn[tmp].len + 1 == sn[nxt].len) sn[end].f = nxt; else { int np = newnode(); sn[np] = sn[nxt]; sn[np].len = sn[tmp].len + 1; sn[end].f = sn[nxt].f = np; while (tmp != -1 && sn[tmp].ch[c] == nxt) sn[tmp].ch[c] = np, tmp = sn[tmp].f; } } last = end; }}sam;int main() { int T_T = read(); while (T_T--) { sam.init(); char str[MAXN]; scanf("%s", str); int len = strlen(str); rep(i, 0, len*2-1) sam.add(str[i%len] - 'a'); int p = 0; rep(i, 0, len-1) rep(j, 0, 25) if (sam.sn[p].ch[j] != -1) {p = sam.sn[p].ch[j]; break;} printf("%d\n", sam.sn[p].len - len + 1); } return 0;}
0 0
- noi2015模板-后缀自动机
- 【bzoj4199】[Noi2015]品酒大会 后缀自动机
- 后缀自动机 模板
- hdu4622 后缀自动机 模板
- 【模板】后缀自动机 LCP
- Sam后缀自动机模板
- 后缀自动机模板
- 后缀自动机+DP NOI2015 Day 2 品酒大会
- HDU5558后缀自动机模板题
- poj1509 后缀自动机模板题
- 后缀自动机(SAM)模板
- 【BZOJ 4199】[Noi2015]品酒大会 后缀自动机构造后缀树+dp
- 字符串模板总结(五):后缀自动机
- SPOJ 8222. Substrings(后缀自动机模板)
- 后缀自动机,SAM,suffix automaton 模板
- 【模板整合】SAM后缀自动机的构建
- [后缀自动机 模板题] SPOJ 8222 Substrings
- 后缀自动机
- noi2015模板-最小表示
- 完成基于哈夫曼树(最优二叉树)的压缩及解压小程序的收获
- HOW TO SET UP ADB (ANDROID DEBUG BRIDGE) IN MAC OSX
- C#子窗体调用主窗体中事件
- Scala归并排序解析
- noi2015模板-后缀自动机
- PHP中类的继承关系
- 多个mapreduce工作相互依赖处理方法完整实例
- 关于iOS逆向工程的工具(二)
- 新书出版了 - 移动App测试实战
- 我的Android进阶之旅------> Android为TextView组件中显示的文本添加背景色
- hdu 1754 I Hate It
- 【沙龙干货】如何在实际工程中使用Swift开发?
- hdu 2066 一个人的旅行