首页 > TAG信息列表 > P2375
P2375 [NOI2014] 动物园
定义字符串的前 \(i\) 个字符组成的字符串中一最大子串 \(T\) 即使前缀也是后缀,且 \(|T|\leq i/2\) ,则定义 \(num[i]=|T|\) ,求 \(num[i]+1\) 之积 \(mod\) 1000000007。 \(|S|\leq 10^6\) 。 熊猫:“对于字符串S的前i个字符构成的子串,既是它的后缀又是它的前缀的字符串中(它本身除P2375 [NOI2014] 动物园
【题意】 求一个字符串的num数组,表示1-i的即使前缀也是后缀且不重叠的串的个数 【分析】 考虑不断跳nxt数组,如nxt[i],nxt[nxt[i]].... 直到跳到长度小于i的一半的时候开始计数那么就得到了num数组 可是这样做的最坏时间复杂度仍然是$O(n^2)$,继续考虑优化,即减少重复递归 现在正常计P2375 [NOI2014]动物园
秘籍之kmp阅读理解---2 这题的题面好像比上一题好理解一点点??但原谅我样例可能理解了半年。。。(其实后来发现luogu讨论里有对于样例的提问和解释,但是很开心的是,我并没有看到。。/微笑/) 这里对于一样不理解样例的人说一句,这里的num数组并不是存储最长的子串长度,而是满足条件的子串个P2375 [NOI2014]动物园 KMP
好,暴力能拿$50pts\space qwq$ 暴力的思路就是一直跳$nxt[j]$,直到它的长度小于串的一半,然后开始计数,当然要接着跳$nxt[j]$ 正解:考虑没有长度要求的(不要求不重合)公共前后缀的数目,显然$ans[i]=ans[j]+1$相当于$i$比$j$是多了$i$它本身。 所以求解时模仿$kmp$的过程,$num[i]$就是一