debug
HHLGsmrdfq · · 个人记录
1.
#include<bits/stdc++.h>
using namespace std;
const int MAXN=5e5+10;
int t;
int n;
string s[11];
string str;
bool f;
pair<int,int> v[MAXN];
bool inc[MAXN];
int cnt;
bool cmp(pair<int,int> a,pair<int,int> b){
return a.second<b.second;
}
int main(){
// freopen("input.in","r",stdin);
// freopen("user_output.out","w",stdout);
freopen("c.in","r",stdin);
freopen("c.out","w",stdout);
cin>>t;
for(int i=1;i<=t;++i){
memset(inc,0,sizeof(inc));
cnt=0;
memset(v,0,sizeof(v));
cin>>n;
for(int j=1;j<=n;++j){
cin>>s[j];
}
cin>>str;
for(int j=0;j<str.size();++j){
for(int k=1;k<=n;++k){
f=true;
for(int l=0;l<s[k].size();++l){
if(str[j+l]!=s[k][l]){
f=false;
break;
}
}
if(f){
v[++cnt].first=j;
v[cnt].second=s[k].size()+j-1;
// cout<<s[k]<<' '<<v[cnt].first<<' '<<v[cnt].second<<'\n';
}
}
}
// cout<<'\n'<<"-----------"<<'\n';
sort(v+1,v+cnt+1,cmp);
for(int j=1;j<=cnt;++j){
if(j+1<=cnt){
if(v[j+1].first<=v[j].first){
for(int k=j;k<=n;++k){
swap(v[k+1],v[k+2]);
}
--cnt;
}
}
// cout<<v[i].first<<' '<<v[i].second<<'\n';
}
for(int j=1;j<=cnt;++j){
str[v[j].second]='*';
f=true;
for(int k=1;k<=cnt;++k){
if((v[k].first<=v[j].second&&v[k].second>=v[j].second)||inc[k]){
inc[k]=true;
}else{
f=false;
}
}
if(f){
cout<<str<<'\n';
break;
}
}
}
return 0;
}