【KMP】Radio Transmission
2024-09-05 05:30:41
问题 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 ;
}
最新文章
- ubuntu16.04装MatConvNet
- JQ对象到底是什么
- 最长上升子序列[LIS]
- SQLServer创建维护计划失败 错误c001f011
- oracle索引使用时注意
- Java安全防御学习笔记V1.0
- 在线预览文件(pdf)
- Win32函数Sleep的精度测试
- vue 的准备项目架构环境配置
- mysql数据库的三范式的设计与理解
- mybatis12--一级缓存
- upload-labs
- UVa 11100 - The Trip, 2007 难度: 0
- Python - 列表解析式
- tidb使用坑记录
- Log4j2配置及使用
- bzoj千题计划289:bzoj 2707: [SDOI2012]走迷宫
- convertView&;setTag方法的一点理解
- hibernate一对一关联
- The operation names in the portType match the method names in the SEI or Web service implementation class.