UVALive 3026(KMP)
来源:互联网 发布:linux集群与自动化运维 编辑:程序博客网 时间:2024/06/06 05:17
题意:求前缀最短循环节点,周期大于1
题解:使用KMP的fail数组性质,如果i%fail[i]==0那么这里就是一个最短循环节点,i/fail[i]为循环子串长度
#include<iostream>#include<cstdio>#include<cstring>#define N int(1e6+5)char s[N];int fail[N];void getfail(char *p, int *f){f[0] = f[1] = 0;for (int i = 1; p[i]; i++){int j = f[i];while (j&&p[i] != p[j])j = f[j];f[i + 1] = p[i] == p[j] ? j + 1 : 0;}}int main(){#ifdef CDZSCfreopen("i.txt", "r",stdin);#endifint n,cas=0;while (~scanf("%d%s", &n,s)&&n){getfail(s, fail);int m = strlen(s);printf("Test case #%d\n", ++cas);for (int i = 2; i <= m; i++){int x = i - fail[i];if (i%x == 0&&i/x>1){printf("%d %d\n", i, i / x);}}puts("");}return 0;}
0 0
- UVALive 3026(KMP)
- UVALive - 3026 - Period (KMP)
- uvalive 3026 Period KMP(失配函数)
- UVALive 3026 Period(KMP裸)
- uvalive 3026(kmp)
- UVAlive 3026 Period [KMP]
- UVALIVE 3026 Period(kmp)
- UVALive 4670(KMP)
- UVALive 3026 period(周期) kmp算法的应用
- uvaLive 3026 - Period 水KMP循环结
- UVALive 3026 (LA 3026) Period KMP求字符串周期
- UVALive 3026 Period ( kmp 求前缀最小循环节)
- UVALive 2426 Multiple Morse Matches(kmp+dp)
- UVALive 3026 Period (KMP上的dp,学习ac自动机的前奏)
- Multiple Morse Matches - UVaLive 2426 KMP+dp
- UVALive 5876 - Writings on the Wall 【KMP】
- UVALive - 3026 Period
- UVALIVE 3516(DP)
- Olly Advanced v1.27插件基本设置
- 资本资产定价模型
- HDU 5631 Rikka with Graph 求从n+1 边中删除一些边使图依然联通
- ACM_模板_求质因子
- 【C#】报表制作<机房重构>
- UVALive 3026(KMP)
- 根据自己的理解描述下Android数字签名?
- 【Android学习】Android Activity生命周期
- 关于Linux中安装软件和加解压
- Tornado路由
- 搭建React Native开发环境
- Python基础回顾之-变量和数据类型
- Web前端环境搭建篇之-- 利用NodeJS来安装Ionic和Cordova
- 新手学习opencv七:svm