Period UVALive
来源:互联网 发布:服务端数据库 编辑:程序博客网 时间:2024/06/05 14:48
对于一段字符串来说,如果存在循环节,那么它的最小循环节一定是 ( 字符串的长度i - Next[i] ) (相当于最后一个循环节),那么直接判断(i % ( i - Next[i] ))就可以判断是不是存在循环节,还要注意Next[] > 0
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;const int maxn = 1000005;char str[maxn];int Next[maxn];int n ;void KMP(){ Next[0] = 0, Next[1] = 0; for(int i = 1; i < n; i++) { int j = Next[i]; while(j && str[i] != str[j]) j = Next[j]; Next[i+1] = (str[i] == str[j] ? j+1 : 0); }}int main(){ int cas = 1; while(scanf("%d", &n) == 1 && n) { scanf("%s", str); KMP();// for(int i = 1 ;i <= n ; i++) cout << i << " " << Next[i] << endl; printf("Test case #%d\n", cas++); for(int i = 2; i <= n; i++) if(Next[i] > 0 && i % ( i - Next[i] ) == 0) printf("%d %d\n", i, i / (i - Next[i])); printf("\n"); } return 0;}
阅读全文
0 0
- Period UVALive
- Period UVALive
- UVALive - 3026 Period
- Period +uvalive+next数组
- UVAlive 3026 Period [KMP]
- UVALIVE 3026 Period(kmp)
- UVALive - 3026 - Period (KMP)
- UVALive 3608 Period(二分答案+DP)
- uvalive 3026 Period KMP(失配函数)
- UVALive 3026 Period(KMP裸)
- 【暑假】[实用数据结构]UVAlive 3026 Period
- uvaLive 3026 - Period 水KMP循环结
- UVALive 3608 Period(DP+二分)
- UVALive 3026 Period ( kmp 求前缀最小循环节)
- UVALive 3026 (LA 3026) Period KMP求字符串周期
- uvalive 3026 Period (前缀最短循环节)
- UVALive 3026 period(周期) kmp算法的应用
- Period
- 【Scikit-Learn 中文文档 】 ApacheCN
- Eclipse项目转AndroidStudio开发
- [面试]同步和异步的区别
- linux下Qt访问sqlserver数据库
- 在jsp上显示存在磁盘上的图片
- Period UVALive
- Linux服务开机自启原理
- 2017Beijing icpc E Cats and Fish HihoCoder
- CentOS Tomcat配置
- 小玩具——温度采集项目(六)
- MongoDB的菜鸟进阶xuex
- 回首Java——基数排序
- mybatis 缓存
- VIN码识别,车架号识别:快速占领汽车后市场数据入口 ,OCR识别技术公司