A:
#include<stdio.h>
#include<string.h>
using namespace std;
int next[10005];
int dir[10005];
int arr[1000005];
int n,m;
int kmp(){
int index=-1;
int i=0,j=0;
while(i<n&&j<m){
while(i<n&&j<m&&dir[j]==arr[i]){
i++,j++;
}
if(j==m){
index=i-j+1;
break;
}
else if(j==0){
i++;
}
else{
j=next[j-1];
}
}
return index;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
memset(next,0,sizeof(next));
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++){
scanf("%d",&arr[i]);
}
for(int i=0;i<m;i++){
scanf("%d",&dir[i]);
}
next[0]=0;
for(int i=1;i<m;i++){
int k=next[i-1];
while(k>0&&dir[k]!=dir[i]){
k=next[k-1];
}
if(k==0){
if(dir[0]==dir[i]) next[i]=1;
else next[i]=0;
}
else next[i]=k+1;
}
printf("%d\n",kmp());
}
return 0;
}
B:
#include<stdio.h>
#include<string.h>
using namespace std;
int next[10005];
char s1[1000005];
char s2[10005];
int n,m;
void getnext(){
int i=0,j=-1;
next[i]=j;
while(i<m){
if(j==-1||s2[i]==s2[j]){
i++,j++;
next[i]=j;
}
else j=next[j];
}
/* for(int i=0;i<=m;i++){
printf("%d ",next[i]);
}
printf("\n");*/
}
int kmp(){
int i=0,j=0;
int cnt=0;
while(i<n&&j<m){
if(j==-1||s1[i]==s2[j]){
i++,j++;
}
else j=next[j];
if(j==m) cnt++,j=next[j];
}
return cnt;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%s",s2);
scanf("%s",s1);
n=strlen(s1);
m=strlen(s2);
getnext();
int ans=kmp();
printf("%d\n",ans);
}
return 0;
}
C:
#include<iostream>
#include<string>
using namespace std;
int main(){
string str1,str2;
cin>>str1;
while(str1!="#"){
cin>>str2;
int len=str2.length();
int cnt=0,index=0;
while((index=str1.find(str2,index))!=str1.npos){
cnt++;
//cout<<index<<endl;
index=index+len;
}
cout<<cnt<<endl;
cin>>str1;
}
return 0;
}
D:
#include<stdio.h>
#include<algorithm>
using namespace std;
int arr[1005];
int main(){
int t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
arr[0]=0;
for(int i=1;i<=n;i++){
scanf("%d",&arr[i]);
}
sort(arr+1,arr+n+1);
int sum=0;
for(int i=n;i>0;i=i-2){
sum=sum^(arr[i]-arr[i-1]-1);
}
if(sum) printf("Georgia will win\n");
else printf("Bob will win\n");
}
return 0;
}