ABC 329 E 求调
  • 板块学术版
  • 楼主Garry_HJR
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/11/18 21:59
  • 上次更新2023/11/19 11:06:29
查看原帖
ABC 329 E 求调
531967
Garry_HJR楼主2023/11/18 21:59

蒟蒻这次 E 没过,吃了9个罚时,求助。

#include<bits/stdc++.h>
using namespace std;
#define itn int
int n,m;
char s[200005],t[15];
char x[200005];
int main(){
	cin>>n>>m;
	scanf("%s",s+1);
	scanf("%s",t+1);
	x[0]='?';
	for(int i=1;i<=n;i++)x[i]='#';
	for(int i=1;i<=n;i++){
		//cout<<x<<endl;
		if(x[i]==s[i])continue;
		//cout<<i<<endl;
		if(x[i]!='#'){
			if(i<=n-m+1&&s[i]==t[1]);
			else {
				cout<<"No"<<endl;
				return 0;
			}
		}
		bool b=0;
		for(int j=1;j<=m;j++){
			if(s[i]==t[j]&&(i-j>=0)&&(i+m-j<=n)){
				b=1;
				for(int k=j;k<=m;k++){
					x[i+k-j]=t[k];
					
				}
				if(b)break;
			}
		}
		//i-=m;
		if(!b){
			cout<<"No"<<endl;
			return 0;
		}
		
	}
	for(int i=1;i<=n;i++){
		if(x[i]!=s[i]){
			cout<<"No"<<endl;
			return 0;
		}
	}
	cout<<"Yes"<<endl;
	return 0;
}
2023/11/18 21:59
加载中...