T1神奇解法
  • 板块学术版
  • 楼主初星逝者
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/18 18:23
  • 上次更新2023/11/18 19:46:40
查看原帖
T1神奇解法
376679
初星逝者楼主2023/11/18 18:23

简单后缀和.....

感觉就是记录每个字符串的最小字符,然后后缀和,看能不能换上来,如果能换就换.....

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;
}
2023/11/18 18:23
加载中...