【hdu 3746】 Cyclic Nacklace KMP求循环节
来源:互联网 发布:淘宝客qq群推广教程 编辑:程序博客网 时间:2024/05/16 17:24
考虑循环节的产生,产生一个循环节,一定是后面的f数组单调递增,全部可以完全匹配。所以总长度减去递增的长度就是循环节的长度。
#include <bits/stdc++.h>using namespace std;char ch[100010];int f[100010];int main(){int t;scanf("%d", &t);while(t --){scanf("%s", ch+1);int len = strlen(ch+1);for(int i = 1; i <= len; i ++) f[i] = 0;int p = 0;for(int i = 2; i <= len; i ++){while(p > 0 && ch[p+1] != ch[i]) p = f[p];if(ch[p+1] == ch[i]) p ++;f[i] = p;}int now = len - f[len];if(now == len) printf("%d\n", len);else if(!(len%now)) printf("0\n");else printf("%d\n", now-(len%now));}return 0;}
0 0
- [KMP-求循环节]HDU 3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace (KMP求最小循环节)
- HDU - 3746 Cyclic Nacklace (KMP求循环节)
- hdu 3746 Cyclic Nacklace(KMP求循环节)
- HDU 3746 Cyclic Nacklace(kmp求循环节)
- hdu 3746 Cyclic Nacklace (kmp求最小循环节)
- HDU-3746-Cyclic Nacklace【KMP求循环节】【经典题】
- HDU 3746 Cyclic Nacklace (kmp求循环节)
- 【hdu 3746】 Cyclic Nacklace KMP求循环节
- HDU 3746 Cyclic Nacklace (KMP 循环节)
- 【kmp循环节】hdu 3746 Cyclic Nacklace
- HDU - 3746 Cyclic Nacklace(KMP 循环节)
- HDU 3746 Cyclic Nacklace [KMP+循环节]
- HDU 3746 Cyclic Nacklace(KMP求最小循环元)
- HDU 3746 Cyclic Nacklace (KMP求循环结)
- HDU-3746 Cyclic Nacklace(KMP求循环)
- Cyclic Nacklace +KMP求循环节
- Cyclic Nacklace(KMP求循环节)
- HDU 1241 dfs Oil Deposits
- freemarker怎么处理EntityNotFoundException
- java实现可变数组
- mybatis系列(二)--mybatis的动态sql
- maven+svn+jenkins基础配置
- 【hdu 3746】 Cyclic Nacklace KMP求循环节
- 不依赖Flash 实现剪贴板复制
- JVM DVM
- 自定义环形进度条UIAnnularProgress(Swift)
- mybatis代码生成的几种方式
- zlip库的下载编译和使用
- vim命令整理
- 魅族手机真机调试出现: INSTALL_FAILED_USER_RESTRICTED 的安装错误
- 【C++内存管理】浅析C++中函数调用时的内存分配-函数局部变量的内存分配