C. Phoenix and Towers1400 / 贪心

Posted 幽殇默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C. Phoenix and Towers1400 / 贪心相关的知识,希望对你有一定的参考价值。


https://codeforces.com/problemset/problem/1515/C
开m个小根堆,尽可能的平分。因为题目给出任意的俩数的差是小于x的,故一定有解。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5*3+10;
typedef pair<int,int> PII; 
int a[N],ans[N],t,n,m,x;
int main(void)
{
	cin>>t;
	while(t--)
	{
		cin>>n>>m>>x;
		for(int i=0;i<n;i++) cin>>a[i];
		priority_queue<PII,vector<PII>,greater<PII>>heap;
		for(int i=0;i<m;i++) heap.push({0,i});
		for(int i=0;i<n;i++)
		{
			auto u=heap.top(); heap.pop();
			u.first+=a[i],ans[i]=u.second;
			heap.push(u);
		}
		puts("YES");
		for(int i=0;i<n;i++) cout<<ans[i]+1<<" ";
		cout<<endl;
	}
	return 0;
}

以上是关于C. Phoenix and Towers1400 / 贪心的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Global Round 14, C. Phoenix and Towers

C. Phoenix and Towers

Codeforces Global Round 14 C. Phoenix and Towers

Codeforces Global Round 14-C. Phoenix and Towers-堆模拟

B. Phoenix and Beauty1400 / 构造 构造循环结

C. Drazil and Factorial1400 / 构造