首页 > TAG信息列表 > BOI2009
luogu P4391 [BOI2009]Radio Transmission 无线传输
想了一堆奇怪的做法,最后通过观察大数据过了。 链接 思路 开始观察 \(border\) 长度盲猜了一个结论,就看在第一个有数值的位置前有几个零,结果错了。 下了数据点后看了一下,发现一段连续后又会出现零,但是似乎每一个合法的字符串在最后都会变回一段从1开始的连续序列,从1一直到字符串结洛谷 P4391 [BOI2009]Radio Transmission 无线传输(KMP)
假设字串长度为 x,字符串从 1 开始计数 next[1]=next[2]=……next[x]=0 next[x+1]=1 next[x+n]=n 发现从 x+1 位置开始,next 数组逐渐递增 1 所以答案为 n-next[n] const int N=1e6+5; int n,m; int i,j,k; char a[N]; int f[N]; void getfail(char *s)Luogu4391 [BOI2009]Radio Transmission 无线传输 (KMP)
\(最小循环节\) \(=\) \(lenghth - next[lenghth]\) #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #define R(a,b,c) for(register int a = (b); a <= (c); ++ a) #define nR(a,b,c)P4391 [BOI2009]Radio Transmission 无线传输
呐呐呐题面 这题可以说是kmp的简化版,也就是说只用求一下next数组,答案输出为n-next[n],那么为什么呢,其实这也很好想,next[i]存储的是下标为i的前缀与从头开始最长的相同前缀的尾下标,故next[n]表示的也就是除去第一个循环节之外的其他长度 #include<set>#include<map>#include<list>#i洛谷P4391 [BOI2009]Radio Transmission 无线传输
(https://www.luogu.org/problemnew/show/P4391) 题目描述 给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少. 输入输出格式 输入格式: 第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母