【KMP思想求循环节】hdu 1358 hust 1010 poj 2406
来源:互联网 发布:手机连不上虚拟网络 编辑:程序博客网 时间:2024/06/05 00:41
字符串的循环节为 字符串长度减去字符串最长公共前后缀的长度。
hdu 1358
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<stack>#include<queue>#include<deque>#include<map>#include<algorithm>using namespace std;typedef long long LL;//#pragma comment(linker, "/STACK:102400000,102400000")/*HDU - 3746给出一个字符串,问还需要在后面添加多少个字符才能使它变成由一个前缀循环多次而成无非求一个next[n]*/const double PI = acos(-1.0);const double eps = 1e-6;const int INF=0x3f3f3f3f;const int mod = 1e9;const int N = 100010;char s[N];int nex[N];void getnext(char *p){ int len = strlen(p); int k = -1; nex[0] = k; for(int i = 1; i < len; i++) { while(k!=-1 && p[i]!=p[k+1]) k = nex[k]; if(p[i]==p[k+1]) k++; nex[i] = k; }}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%s",s); getnext(s); int len = strlen(s); int x = nex[len-1]+1; x = len-x; if(x == len) { printf("%d\n",x); continue; } if(len%x == 0) puts("0"); else printf("%d\n",x-len%x); } return 0;}
其他两题没什么变化。
阅读全文
0 0
- 【KMP思想求循环节】hdu 1358 hust 1010 poj 2406
- KMP + 求最小循环节 --- HUST 1010
- hust 1010 KMP算法求最小循环节
- hust 1010 - The Minimum Length KMP求循环节
- HUST 1010 KMP最短循环节
- POJ 2406 KMP求字符串循环节
- POJ-2406-kmp求最小循环节
- POJ 2406 kmp求循环节个数
- poj 2406 KMP求循环节
- hdu 1358 period 求循环节 KMP
- HDU-1358 Period(KMP求循环节)
- hdu 1358 kmp 求循环节
- hust 1010 The Minimum Length(KMP求最小循环节)
- HUST 1010 The Minimum Length (kmp求最小循环节)
- KMP入门题 Hdu 1711 2594 3746 HUST 1010 Poj 3461 2752 2406 1961 FZU 1901
- HUST - 1010 The Minimum Length(KMP 循环节)
- POJ 2406 Power Strings KMP 求最小循环节
- POJ 2406 Power Strings(KMP求最小循环节)
- 最大的位或
- STM32上使用UCOSII--消息队列和信号量集
- 学习Scrapy框架
- 接雨水
- 第一个shell文件
- 【KMP思想求循环节】hdu 1358 hust 1010 poj 2406
- caffe中forward过程总结(2)
- HDU1862 EXCEL排序【排序】
- 45-圆圈中最后剩下的数字
- 联络
- 【数据库系统概念】第6章 形式化关系查询语言 知识总结
- 格力空调价格。
- 求N的阶乘所得的数字末尾含有多少个0
- java concurrent-ConcurrentHashMap