//141 周期
求一个字符串的所有前缀的循环节出现的最大次数。也就是最小循环节
kmp算法求循环节;
将原串移动,移动后我们得知,四个黑色大括号完全相同。在下图所示的事例中,原串只有两个循环节,加一个红括号。k3加一个红括号的长度就是kmp中的next数组。
字符串长度-next即为循环节长度。
下面的串向右移动的长度为n-next,而next是最大的前后缀相等的长度。所以移动的长度K是最小的循环节。
上面我们做了什么事:我们根据字符串的next数组的最大值,将其向后移动,使得前后缀重合。
又根据一些特点,(移动前后对应位置相等,前后缀对应相等)得到规律。
但是上面作图的前提是一个串去除了后缀之后的剩余长度。比后缀小。否则构成不了关系。
下面这种情况就不能构成后缀是由某个循环体构成的。
#include
using namespace std;
const int N=1e6+10;
int n,m;
char s[N];
int ne[N];
//141周期
int main()
{服务器托管网
int T=0;
wh服务器托管网ile(scanf("%d",&n),n)
{
scanf("%s",s+1);
for(int i=2,j=0;i1)cout
831 kmp字符串(第一个自己ac的kmp)
还犹豫下午到底还学不学kmp
#include
//831 kmp字符串
using namespace std;
const int N=1e5+10,M=1e6+10;
int n,m;
char p[N];//p和s都是从1开始存
char s[M];
int ne[N];//从0开始
int main()
{
cin>>n>>s+1>>m>>p+1;
//求next数组
ne[1]=0;
for(int i=2,j=0;i
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
Web3.0正在改写着世界运行的规则,AGI将为人类未来的生产效率、工作方式与目标带来改变,区块链经过十余年发展开启了去中心化新格局,带来生产服务器托管网关系的变革。人类正在从过往以时间换取收入、听命完成工作,转变为以个性化、自主追求人生价值为目标。由此诞生的…