n-ne[n]是n的最长循环节长度,其实就是n-最短前缀=后缀长度 然后我们要求最短循环节,其实就是ne一直往前跳,跳到不能跳为止,这时的n-ne[n]就是n的最短循环节长度 #include<iostream> #include<cstdio> using namespace std; const int N=1000005; int n,ne[N]; long long ans; char s[N]; void gtne() { int i=0,j=-1; ne[0]=-1;…
1511: [POI2006]OKR-Periods of Words Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 351 Solved: 220[Submit][Status][Discuss] Description 一个串是有限个小写字符的序列,特别的,一个空序列也可以是一个串. 一个串P是串A的前缀, 当且仅当存在串B, 使得 A = PB. 如果 P A 并且 P 不是一个空串,那么我们说 P 是A的一个proper前缀. 定义Q 是A…
1511: [POI2006]OKR-Periods of Words https://www.lydsy.com/JudgeOnline/problem.php?id=1511 题意: 对于一个串的所有前缀,设为s,求出它的最大前缀Q,使得s为QQ的前缀.求最大前缀长度的和. 分析: KMP+next数组. next数组表示的是这个字符串的最大的公共前缀后缀.对于字符串s,设其next为j,那么它的前j个和后j个是相等的.如果这j个没有重叠,那么所求的最长前缀就是1~n-j.把这个前缀重复两遍…
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1513 题意:三维空间,有一些立方体在垂直下落.立方体的左下角坐标(x,y)以及长宽高d,s,w.A落在B上时将停止下落(即使A只有一小块跟B重合就算A会落在B上).求最后最大的高度. 思路:每次覆盖时找到区域最大值,加上当前立方体的高度. int xL,xR,yL,yR; int h; int n,m; struct Seg { int f[N<<1],s[N<<1…