
KMP
KMP
Wa_Automata
这个作者很懒,什么都没留下…
展开
-
2022河南萌新联赛第(六)场:郑州大学 L - 字符串
直接复制一遍母串,套一个。原创 2022-08-15 12:30:05 · 110 阅读 · 0 评论 -
HDU - 4847 Wow Such Doge(小心输入,输出)
HDU - 4847 Wow! Such Doge!#include<iostream>using namespace std;int main(){ string s; int res=0; while(getline(cin,s)) { //if((int)s.size()==0) break;//加上就WA了 for(int i=0;i<(int)s.size();i++) if(s[i]>='A'&&s[i]<='Z')原创 2022-04-14 19:10:56 · 298 阅读 · 0 评论 -
HDU - 2609 How many(最小表示法)
HDU - 2609 How many(最小表示法)#include<iostream>#include<set>using namespace std;int get_min(string s,int n){ int k=0,i=0,j=1; while(k<n&&i<n&&j<n) { if(s[(i+k)%n]==s[(j+k)%n]) k++; else { if(s[(i+k)%n]>原创 2022-04-13 15:22:58 · 128 阅读 · 0 评论 -
HDU - 3374 String Problem(KMP,最小最大表示法)
HDU - 3374 String Problem(最大最小表示法,KMP)#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N = 1000010;char s[N];int ne[N];void get_next(char b[],int m){ for(int i=2,j=0;i<=m;i++) { while(j&原创 2022-04-10 18:44:32 · 365 阅读 · 0 评论 -
HDU - 2328 Corporate Identity(暴力截取)
HDU - 2328 Corporate Identity#include<iostream>using namespace std;const int N = 4010;string s[N];int n;bool check(string str){ for(int i=2;i<=n;i++) if(s[i].find(str)==string::npos) return false; return true;}int main(){ while(原创 2022-04-10 14:56:20 · 308 阅读 · 0 评论 -
HDU - 4300 Clairewd’s message(KMP)
HDU - 4300 Clairewd’s message(KMP)#include<cstdio>#include<cstring>const int N = 100010;char s[30],str[N],s1[30],s2[30],b[N<<1];int ne[N<<1];void get_next(int m){ for(int i=2,j=0;i<=m;i++) { while(j&&b[i]!=原创 2022-04-10 14:40:51 · 231 阅读 · 0 评论 -
POJ - 2185 Milking Grid(KMP)
POJ - 2185 Milking Grid(KMP)#include<stdio.h>#include<string.h>const int N = 10010, M = 80;char str[N][M];int ne[N],st[M];int main(){ int n,m;scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%s",str[i]); for(int j原创 2022-02-04 15:17:36 · 439 阅读 · 0 评论 -
HDU - 1867 A + B for you again(KMP)
HDU - 1867 A + B for you again#include<iostream>#include<cstring> using namespace std;string a,b;const int N = 100010;int p[2*N];int m,n,c;void getnext1(){ memset(p,-1,sizeof p); int j=-1,i=0; while(i<m) { if(j==-1||b[i]==b[j原创 2021-07-22 15:35:32 · 125 阅读 · 0 评论 -
HDU - 2203 亲和串(KMP模板)
HDU - 2203 亲和串#include<iostream>#include<cstring> using namespace std;string a,b;const int N = 100010;int p[2*N];int m,n,c;void getnext(){ memset(p,-1,sizeof p); int j=-1,i=0; while(i<m) { if(j==-1||b[i]==b[j]) p[++i]=++j;原创 2021-07-22 15:33:07 · 122 阅读 · 0 评论 -
HDU - 3068 最长回文 (Manacher算法)
HDU - 3068 最长回文#include<iostream>#include<cstring>#include<vector>using namespace std;const int N=1010;int Manacher(string s){ if(s.size() <= 1) return 1; string str = "@#";//一定注意这个@,非常关键,因为在从下标为1的#字符开始求解p数组时没有这个符号就越界了原创 2021-07-21 19:43:09 · 191 阅读 · 0 评论 -
HDU - 3336 Count the string(KMP,前缀出现次数)
HDU - 3336 Count the string#include<cstdio>#include<cstring>const int N = 1e6+10;char b[N];int p[N],m;void getnext(){ int i=0,j=-1; memset(p,-1,sizeof p); while(i<m) { if(j==-1||b[i]==b[j]) p[++i]=++j; else j=p[j]; } }int原创 2021-07-19 10:28:41 · 151 阅读 · 0 评论 -
HDU - 4763 Theme Section(KMP)
HDU - 4763 Theme Section#include<cstdio>#include<cstring> const int N = 1e6+10;char b[N];int p[N];int m;void getnext(){ int i=0,j=-1; memset(p,-1,sizeof p); while(i<m) { if(j==-1||b[i]==b[j]) p[++i]=++j; else j=p[j]; }}原创 2021-07-19 09:37:21 · 117 阅读 · 0 评论 -
HDU - 2594 Simpsons’ Hidden Talents(KMP模板题)
HDU - 2594 Simpsons’ Hidden Talents#include<iostream>#include<cstdio>#include<cstring>using namespace std;string b,a;int p[1000010];int m;void getnext(){ int i=0,j=-1; memset(p,-1,sizeof p); while(i<m) { if(j==-1||b[i原创 2021-07-19 09:33:48 · 152 阅读 · 0 评论 -
HDU - 1686 Oulipo(KMP模板题)
HDU - 1686 Oulipo#include<cstdio>#include<cstring>char a[10010],b[1000010];int p[10010];int n,m,c;void getnext(){ int i=0,j=-1; memset(p,-1,sizeof p); while(i<n) { if(j==-1||a[i]==a[j]) p[++i]=++j; else j=p[j]; }}void kmp原创 2021-07-19 09:32:00 · 221 阅读 · 0 评论 -
HDU - 1358 Period(循环节)
HDU - 1358 Period#include<cstdio>#include<cstring>char b[1000010];int p[1000010];int m;void getnext(char *b){ int i=0,j=-1; memset(p,-1,sizeof p); while(i<m) { if(j==-1||b[i]==b[j]) p[++i]=++j; else j=p[j]; }}int main()原创 2021-07-19 09:27:49 · 132 阅读 · 0 评论 -
POJ - 3080 Blue Jeans (暴力截取)
POJ - 3080 Blue Jeans#include<iostream>using namespace std;string s[20],str;int main(){ int t,n;cin>>t; while(t--) { string ss="no significant commonalities"; cin>>n; for(int i=1;i<=n;i++) cin>>s[i]; for(int k=3;k原创 2021-07-19 09:24:05 · 130 阅读 · 0 评论 -
POJ - 2406 Power Strings(KMP最小循环节)
POJ - 2406 Power Strings#include<cstdio>#include<cstring>char a[1000010];int p[1000010];int n,m,c;void getnext(){ int i=0,j=-1; memset(p,-1,sizeof p); while(i<m) { if(j==-1||b[i]==b[j]) p[++i]=++j; else j=p[j]; }}int ma原创 2021-07-19 09:21:47 · 122 阅读 · 0 评论 -
POJ - 2752 Seek the Name, Seek the Fame(KMP)
POJ - 2752 Seek the Name, Seek the Fame找当前串的最大相同前缀后缀,找到一个后,令该相同前缀后缀为当前串,再循环调用,直到循环到P[0]=-1的位置#include<cstdio>#include<cstring> const int N = 400005;char b[N];int p[N],a[N];int m;void getnext(){ int i=0,j=-1; memset(p,-1,sizeof p);原创 2021-07-19 09:18:52 · 177 阅读 · 0 评论 -
HDU - 3746 Cyclic Nacklace(KMP最小循环节)
HDU - 3746 Cyclic Nacklace(KMP)#include<cstdio>#include<cstring>char a[1000010];int p[1000010];int n,m,c;void getnext(){ int i=0,j=-1; memset(p,-1,sizeof p); while(i<n) { if(j==-1||a[i]==a[j]) p[++i]=++j; else j=p[j]; }}原创 2021-07-18 18:29:43 · 133 阅读 · 0 评论 -
HDU -1238 Substrings(暴力)
HDU -1238 Substrings#include<iostream>#include<algorithm>using namespace std;const int inf=0x3f3f3f3f;string s[110],s1,s2;int n;int judge(){ s2=s1; reverse(s2.begin(),s2.end());//反转 for(int i=1;i<=n;i++)//比对后面的字符串 if(s[i].fin原创 2021-07-18 18:25:52 · 177 阅读 · 3 评论 -
HDU - 2087 剪花布条(KMP)
HDU - 2087 剪花布条#include<cstdio>#include<cstring>char a[10010],b[1000010];int p[10010];int n,m,c;void getnext(){ int i=0,j=-1; memset(p,-1,sizeof p); while(i<n) { if(j==-1||a[i]==a[j]){ i++,j++,p[i]=j; } else j=p[j]; }}原创 2021-07-18 10:37:03 · 135 阅读 · 0 评论 -
HDU - 1711 Number Sequence(KMP)
HDU - 1711 Number Sequence#include<cstdio>#include<cstring>char a[1010],b[1010];int p[1010];int n,m,c;void getnext(){ int i=0,j=-1; memset(p,-1,sizeof p); while(i<n) { if(j==-1||a[i]==a[j]){ i++,j++,p[i]=j; } else j=p[j];原创 2021-07-18 10:34:32 · 149 阅读 · 0 评论