比赛 20241021 评测结果 AAAAAAAAAAAAAA
题目名称 子序列 最终得分 100
用户昵称 健康铀 运行时间 0.146 s
代码语言 C++ 内存使用 4.91 MiB
提交时间 2024-10-21 09:14:02
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int m,ans,f[30][100010],p;
string t,s;
int main(){
	freopen("subsequence.in","r",stdin);
	freopen("subsequence.out","w",stdout);
	cin>>t;
	for(int i=1;i<=26;i++){
		f[i][t.size()]=-1;
		for(int j=t.size()-1;j>=0;j--){
			if(t[j]-'a'+1==i)
			f[i][j]=j;
			else
			f[i][j]=f[i][j+1];
		}
	}
	cin>>m;
	while(m--){
		cin>>s;
		ans=0,p=0;
		for(int i=0;i<=s.size()-1;i++){
//		    cout<<s[i]<<" "<<f[s[i]-'a'+1][ans]<<endl;
			if(f[s[i]-'a'+1][ans]==-1){
				p=1;
				break;
			}
			
			ans=f[s[i]-'a'+1][ans]+1;
		}
		if(p==0)
		cout<<"Yes"<<endl;
		else
		cout<<"No"<<endl;
	}
	return 0;
}