做题记录 CF727C

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了做题记录 CF727C相关的知识,希望对你有一定的参考价值。

Codeforces727C Stable Grops

第一眼上去以为二分答案,结果是贪心。

先扫一遍贪心得到组数最小的分配方案(不插入学生)。

然后将组与组之间的差排序,贪心考虑插人。

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
#define ll long long
ll n, k, x, a[200005], prob[200005], cnt;
ll cmp(int aa, int bb)
{
	return (a[aa + 1] - a[aa]) < (a[bb + 1] - a[bb]);
}
int main()
{
	scanf("%lld%lld%lld", &n, &k, &x);
	for(ll i = 1; i <= n; i++)
	{
		scanf("%lld", &a[i]);
	}
	sort(a + 1, a + n + 1);
	ll tot = 1;
	for(ll i = 2; i <= n; i++)
	{
		if(a[i] - a[i - 1] > x)
		{
			prob[++cnt] = i - 1;
			tot++;
		}
	}
	sort(prob + 1, prob + cnt + 1, cmp);
	for(ll i = 1; i <= cnt; i++)
	{
		if(k >= ((a[prob[i] + 1] - a[prob[i]] - 1) / x))
		{
			k -= ((a[prob[i] + 1] - a[prob[i]] - 1) / x);
			tot--;
		}
	}
	printf("%lld", tot);
	return 0;
}

以上是关于做题记录 CF727C的主要内容,如果未能解决你的问题,请参考以下文章

做题记录

省选前的做题记录(Round2)

做题记录

后缀自动机做题记录

codeforces727C(交互)

CF561做题