KMP
ssllyr
锦瑟无端五十弦,一弦一柱思华年。
展开
-
【ybtoj 高效进阶 2.3】D.子串拆分【KMP】
题目链接:子串拆分 分析 枚举子串,求这个子串的 next 数组,而且只要两个串不重合且长度大于 k 就可以计入答案 上代码 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; char s[15001],s1[15001]; int kk,n,ans; int next[15001]; int main() { sc.原创 2021-07-09 08:27:13 · 148 阅读 · 0 评论 -
【ybtoj 高效进阶 2.3】C.周期长度和【KMP】
题目链接 分析 求最长周期就需要求最小重合部分 KMP的next数组就是 最后用总长度减去它就是最长周期 上代码 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; char x[1000010]; int n,k,next[1000100]; long long ans; int find(int y) { if(.原创 2021-07-09 07:58:42 · 108 阅读 · 0 评论 -
【ybtoj 高效进阶 2.3】B.重复子串【KMP】
题目在此 分析 参考这个博客 上代码 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; char x[1000001]; int len,p[1000001]; int main() { scanf("%s",x+1); len=strlen(x+1); while(x[1]!='.'||len!=1) { .原创 2021-07-09 07:50:25 · 87 阅读 · 0 评论 -
【ybtoj 高效进阶 2.3】子串查找【KMP】
分析 思路这里很好 上代码 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; char x[1000001],y[1000001]; int ans,len1,len2,nxt[1000001]; int main() { scanf("%s%s",x+1,y+1); len1=strlen(x+1); l..原创 2021-07-09 07:44:40 · 114 阅读 · 0 评论