Period[HDU1358]】的更多相关文章

Period Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2120    Accepted Submission(s): 1039 Problem Description For each prefix of a given string S with N characters (each character has an ASCI…
题目链接:https://vjudge.net/problem/HDU-1358 Period Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9652    Accepted Submission(s): 4633 Problem Description For each prefix of a given string S with…
Period Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 20436   Accepted: 9961 Description For each prefix of a given string S with N characters (each character has an ASCII code between 97 and 126, inclusive), we want to know whether the…
For each prefix of a given string S with N characters (each character has an ASCII code between 97 and 126, inclusive), we want to know whether the prefix is a periodic string. That is, for each i (2 <= i <= N) we want to know the largest K > 1 (…
题目链接:https://cn.vjudge.net/problem/HDU-1358 题意 给一个字符串,对下标大于2的元素,问有几个最小循环节 思路 对每个元素求一下minloop,模一下就好 提交过程 TLE maxn没给够 AC 代码 #include <cstring> #include <cstdio> const int maxm=1e6+20; char P[maxm]; int fail[maxm]; void getFail(int m){ fail[0]=fa…
首先给个博客:http://blog.csdn.net/lttree/article/details/20732385 感觉他说的很好,尤其是引用的那个博客,清晰的说明了循环节的两个公式. http://www.cnblogs.com/jackge/archive/2013/01/05/2846006.html 那我就在重复一遍,这两个公式这的很重要. 对于这个循环节就是两个公式, 在i位置可以判断0~i-1的循环: 如果i%(i-next[i])==0 那么就有循环,并且next[i]!=0,…
第一次做KMP.还没有理解透. 在自己写一遍时没有让next[0]初始化为-1. 还有就是next应该是c++中的关键字,提交后编译错误. From: http://blog.csdn.net/libin56842/article/details/8498391 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include "ctype.…
题意 求所有循环次数大于1的前缀 的最大循环次数和前缀位置 解法 直接用KMP求最小循环节 当满足i%(i-next[i])&&next[i]!=0 前缀循环次数大于1 最小循环节是i-next[i] #include <cstdio> #include <cstring> #include <iostream> #include <cstdlib> using namespace std; char S[2000000]; int NEXT…
链接 http://acm.hdu.edu.cn/showproblem.php?pid=1358 思路 当初shenben学长暑假讲过,当初太笨了,noip前几天才理解过来.. 我也没啥好说的 代码 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N=1e6+7; int n,len,fail[N]; char s[N]; void get_…
给出一个字符串,找出所有可以作为它循环节的子串长度 利用kmp的失配数组的性质,可以直接做 #include<stdio.h> #include<string.h> ; char t[maxm]; int p[maxm]; int main(){ int m; ; while(scanf("%d",&m)!=EOF&&m){ int i,j; scanf("%s",t); p[]=p[]=; ;i<m;i++){…