思路

KMP算法的next数组是该字符串的最长的相同的前缀和后缀的长度

所以i-next[i]是最小的循环节长度

然后如果next[i]不为0,则证明一定有循环(不一定完整)

然后如果整除,就是完整的循环了

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int T,n,nxt[1000100];
char s[1000100];
void get_fail(char *s){
nxt[0]=0;
nxt[1]=0;
int j=0;
for(int i=1;i<n;i++){
j=nxt[i];
while(s[j]!=s[i]&&j)
j=nxt[j];
if(s[j]!=s[i])
nxt[i+1]=0;
else
nxt[i+1]=j+1;
}
}
int main(){
int cnt=0;
while(scanf("%d",&n)&&n){
cnt++;
memset(nxt,0,sizeof(nxt));
scanf("%s",s);
get_fail(s);
printf("Test case #%d\n",cnt);
for(int i=2;i<=n;i++){
if((nxt[i])&&(i%(i-nxt[i])==0))
printf("%d %d\n",i,i/(i-nxt[i]));
}
putchar('\n');
}
return 0;
}

UVA1328 Period的更多相关文章

  1. 洛谷 UVA1328 Period

    洛谷 UVA1328 Period 洛谷传送门 题目描述 PDF 输入格式 无 输出格式 无 题意翻译 题意描述 对于给定字符串S的每个前缀,我们想知道它是否为周期串.也就还是说,它是否为某一字符串重 ...

  2. UVa1328 - Period(KMP找最短循环节)

    题目大意 给定一个长度为n的字符串,求它的每个前缀的最短循环节 题解 白书例题~~~ "错位部分"长度为i-f[i], 如果这个前i个字符能够组成一个周期串,那么"错位& ...

  3. UVA1328 Period【KMP/周期串/循环节】By cellur925

    鲜有的在luogu发题解以及使用LaTex??? 就丢链接跑了.

  4. 「UVA1328」「POJ1961」 Period 解题报告

    UVA1328 Period 其他链接:luogu UVA1328 POJ1961 For each prefix of a given string S with N characters (eac ...

  5. KMP【UVA1328】 Period

    Description 如果一个字符串S是由一个字符串T重复K次形成的,则称T是S的循环节.使K最大的字符串T称为S的最小循环节,此时的K称为最大循环次数. 现给一个给定长度为N的字符串S,对S的每一 ...

  6. 「UVA1328」Period 解题报告

    English题面 题意: 给你一个长度为n的字符串,依次取字符串前i个(前缀),如果前缀由k(k>0)个相同真子串构成,那么输出i和k 直到n为0结束,每组数据后要有一行空白 思路: KMP+ ...

  7. TCP Provider The semaphore timeout period has expired

    我们一数据库服务器上有个作业最近几天偶尔会遇到下面错误(敏感信息已做处理),主要是报"TCP Provider: The semaphore timeout period has expir ...

  8. SSRS 2008 R2 错误:Timeout expired. The timeout period

    今天遇到了Reporting Services(SQL SERVER 2008 R2)的报表执行异常情况,报表加载数据很长时间都没有响应,最后报"An error occurred with ...

  9. Clock Skew , Clock Uncertainty和 Period

    本文将介绍FPGA中和时钟有关的相关概念,阅读本文前需要对时序收敛的基本概念和建立.保持关系有一定了解,这些内容可以在时序收敛:基本概念,建立时间和保持时间(setup time 和 hold tim ...

随机推荐

  1. 03.Django的MTV开发模式详解和模型关系构建

    ORM:对象关系映射 一:MTV开发模式把数据存取逻辑.业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的 Model-View-Controller(MVC)模式. 在这个模式中,Model 代 ...

  2. C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法

    from:http://www.jb51.net/article/71319.htm 本文实例讲述了C#实现WinForm禁止最大化.最小化.双击标题栏.双击图标等操作的方法.分享给大家供大家参考.具 ...

  3. 这 10 款良心 Windows 软件,改变你对国产的认知

    提起国产 Windows 软件,你可能首先想到的是捆绑安装.弹窗广告.卸载残留等关键词.尽管一些所谓「大厂」的确致力于拉低业界的下限,但依然有开发者坚守底线,为改变整个生态圈而默默努力.今天,少数派就 ...

  4. linux crontab详解 php开发相关

    vi vi /etc/crontab 注意不是这么直接干的! 下面是内容 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root ...

  5. transition:all .2s

    all属性实际上是所有CSS属性的缩写,表示,所有的CSS属性都怎样怎样.

  6. 使用docker容器运行MySQL数据库并持久化数据文件

    1.下载mysql镜像 # docker pull mysql 2.启动mysql容器 # docker run -itd -v /data:/var/lib/mysql -p 33060:3306 ...

  7. python摸爬滚打之day20--多继承,MRO和C3算法

    1.新式类和经典类 在python2.2之前, 基类如果不写(), 则表示为经典类; 在python2.2之后, 经典类不复存在, 只存在新式类. 如果基类谁都不继承的话, 则默认继承object. ...

  8. qemu对虚拟机的内存管理(一)

    在分析了KVM中对虚拟机各级地址(gva->gpa->hva->hpa)的转换之后,想要知道qemu中又是如何完成各级地址转换的,因此对qemu中对虚拟机内存管理的相关数据结构与源码 ...

  9. Selenium IDE

    Selenium IDE : Selenium IDE作为Firefox浏览器的一款插件,依附于firefox浏览器,打开它的录制功能,它会忠实的记录,你对firefox的操作,并可以回放它所记录的你 ...

  10. java框架之MyBatis(1)-入门&动态代理开发

    前言 学MyBatis的原因 1.目前最主流的持久层框架为 Hibernate 与 MyBatis,而且国内公司目前使用 Mybatis 的要比 Hibernate 要多. 2.Hibernate 学 ...