CodeForces - 123A Prime Permutation

一道思维题。

没怎么观察规律,直接按字面意思做的。用并查集将字符相同的位置归类,然后将类数和已出现字符数量比较,如果出现字符数量小于类数则失败。这道题巧了没有复杂的情况比如6 4对4 3 3,否则就错了

网上搜到了更科学的解法:https://blog.csdn.net/weixin_30613433/article/details/95712756

这种题还是要注意找规律啊!

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define MAX 50500
#define INF 0x3f3f3f3f
#define EXP 1e-9

using namespace std;

typedef long long ll;

int pri[MAX];
char s[MAX];
int tree[MAX];
int val[MAX];
struct node{
	int id,num;
}lat[30];
int a[MAX];
int out[1200];
priority_queuep,q;

bool operator<(struct node a,struct node b){
	return a.numb.num){
			flag=0;
			break;
		}
		b.num-=a.num;
		for(int i=1;i<=len;i++){
			if(Find(i)==a.id)
				out[i]=b.id;
		}
		q.push(b);
	}
	if(!flag)printf("NO\n");
	else {
		printf("YES\n");
		for(int i=1;i<=len;i++)
			printf("%c",out[i]+'a');
		printf("\n");
	}
    return 0;
}

 

你可能感兴趣的:(思维)