题意

给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少.

(n<=1000000)

题解

这种求最小循环节的题一般是KMP。

因为有一个很强的结论if(len%(len-nxt[len])==0)那这个字符串的最小环节为len-nxt[len]。

又因为题目说明给出的是有循环节的,所以直接输出len-nxt[len]就行了。

 #include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=;
int n,nxt[N];
char s[N];
int main(){
scanf("%d",&n);
scanf("%s",s+);
nxt[]=;
for(int i=,j=;i<=n;i++){
while(j&&s[j+]!=s[i])j=nxt[j];
if(s[j+]==s[i])j++;
nxt[i]=j;
}
printf("%d",n-nxt[n]);
return ;
}

最新文章

  1. 关于几个主流语音SDK的接入问题
  2. SQL Server 进制转换函数
  3. linux 排序命令sort
  4. Socket通信(二)
  5. Codeforces Round #313 (Div. 2) A. Currency System in Geraldion
  6. android linux
  7. 08day1
  8. 16进制字符串转数字(C/C++,VB/VB.net,C#)
  9. 【JSF框架】 是一种标准
  10. NSUserDefaults偶尔/有时候保存数据会失败/失效
  11. Android 使用 RemoteViews 发送自定义通知 ,遇到 Couldn&#39;t expand RemoteViews问题总结
  12. Hacker(24)----防范密码被轻易破解
  13. javaScript表单焦点自动切换
  14. js正则表达式验证字符长度
  15. 可视化之Berkeley Earth
  16. 2015&amp;nbsp;Objective-C&amp;nbsp;三大新特性
  17. 使用Spring表达式语言进行装备--SpEL
  18. Kettle解决方案: 第三章 安装和配置
  19. 开通博客的第一天上传我的C#基础笔记。
  20. 怎么加密接口防止,API外部调用?

热门文章

  1. Unity 组件的增、查、禁、删 代码书写
  2. 转载:常用 Git 命令清单
  3. 初见UDP_Server
  4. pythone 学习笔记(粗略)
  5. Element源码阅读(1)
  6. Ajax得到JSON数据
  7. Oracle expdp导出多表或表中的部分数据
  8. 数据库联表统计查询 Group by &amp; INNER JOIN
  9. maven也是Apache开发的,也是java开发的。maven需要你本地系统JDK的支持
  10. nodejs即时聊天