问题 L: 【KMP】Radio Transmission

题目描述

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

输入

第一行给出字符串的长度L,第二行给出一个字符串,全由小写字母组成。

输出

输出最短的长度。

样例输入

8
cabcabca

样例输出

3

提示

我们可以利用abc不断自我连接得到abcabcabc,读入的cabcabca是它的子串。

对于全部数据,1≤L≤1e6


【题意】:

题意花里胡哨,其实就是问,最小循环串。

【题解】:

kmp的强大应用,可以利用最长前缀来处理该问题。

相关解释可以去b站搜索ACwing——字符串和哈希。

结论是:m-next[m] 最小循环串的长度。

 #include<bits/stdc++.h>
using namespace std;
const int N = 1e6+;
char p[N];
int Next[N],m;
void get_Next(){
for(int i=,j= ; i<=m ; i++ ){
while( j && p[i] != p[j+] ) j = Next[j];
if( p[i] == p[j+] ) j ++;
Next[i] = j ;
}
}
int main()
{
scanf("%d",&m);
scanf("%s",p+);
get_Next();
/*
for(int i=1;i<=m;i++){
printf("%d%c",Next[i],i==m?'\n':' ');
}
*/
printf("%d\n",m-Next[m]);
return ;
}

最新文章

  1. ubuntu16.04装MatConvNet
  2. JQ对象到底是什么
  3. 最长上升子序列[LIS]
  4. SQLServer创建维护计划失败 错误c001f011
  5. oracle索引使用时注意
  6. Java安全防御学习笔记V1.0
  7. 在线预览文件(pdf)
  8. Win32函数Sleep的精度测试
  9. vue 的准备项目架构环境配置
  10. mysql数据库的三范式的设计与理解
  11. mybatis12--一级缓存
  12. upload-labs
  13. UVa 11100 - The Trip, 2007 难度: 0
  14. Python - 列表解析式
  15. tidb使用坑记录
  16. Log4j2配置及使用
  17. bzoj千题计划289:bzoj 2707: [SDOI2012]走迷宫
  18. convertView&amp;setTag方法的一点理解
  19. hibernate一对一关联
  20. The operation names in the portType match the method names in the SEI or Web service implementation class.

热门文章

  1. 非旋treap
  2. 为ubuntu安装powerline记录
  3. ubuntu上面Parity 安装
  4. JAVA的main方法
  5. linux shell中如何让$就表示为$呢?
  6. oracle-sql脚本
  7. 超详细MySQL安装及基本使用教程
  8. [maven]maven插件 tomcat7-maven-plugin 的使用
  9. SQL查询交集、并集、差集
  10. javascript一些实用的方法