简单后缀和.....
感觉就是记录每个字符串的最小字符,然后后缀和,看能不能换上来,如果能换就换.....
40行.....
#include <bits/stdc++.h>
using namespace std;
int n,m;
string a[30005];
int sum[3005][105];
int minn[3005];
int getnum(char c){
return c-'a';
}
int main(){
freopen("dict.in","r",stdin);
freopen("dict.out","w",stdout);
memset(minn,0x3f,sizeof(minn));
cin >> n >> m;
for(int i=1;i<=n;i++){
cin >> a[i];
for(int j=0;j<a[i].length();j++){
minn[i]=min(minn[i],getnum(a[i][j]));
sum[i][getnum(a[i][j])]++;
}
for(int j=50;j>=0;j--){
sum[i][j]=sum[i][j+1]+sum[i][j];
}
}
for(int i=1;i<=n;i++){
bool flag=1;
for(int j=1;j<=n;j++){
if(i!=j){
if(sum[j][minn[i]+1]==0){
flag=0;
break;
}
}
}
cout<<flag;
}
return 0;
}