首页 > 其他分享 >CF #727(div2)C. Stable Groups,贪心,排序

CF #727(div2)C. Stable Groups,贪心,排序

时间:2023-02-08 16:02:18浏览次数:38  
标签:vc 20 students LL CF 727 levels Groups stable


problem

C. Stable Groups
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
There are n students numerated from 1 to n. The level of the i-th student is ai. You need to split the students into stable groups. A group of students is called stable, if in the sorted array of their levels no two neighboring elements differ by more than x.

For example, if x=4, then the group with levels [1,10,8,4,4] is stable (because 4−1≤x, 4−4≤x, 8−4≤x, 10−8≤x), while the group with levels [2,10,10,7] is not stable (7−2=5>x).

Apart from the n given students, teachers can invite at most k additional students with arbitrary levels (at teachers’ choice). Find the minimum number of stable groups teachers can form from all students (including the newly invited).

For example, if there are two students with levels 1 and 5; x=2; and k≥1, then you can invite a new student with level 3 and put all the students in one stable group.

Input
The first line contains three integers n, k, x (1≤n≤200000, 0≤k≤1018, 1≤x≤1018) — the initial number of students, the number of students you can additionally invite, and the maximum allowed level difference.

The second line contains n integers a1,a2,…,an (1≤ai≤1018) — the students levels.

Output
In the only line print a single integer: the minimum number of stable groups you can split the students into.

Examples
inputCopy
8 2 3
1 1 5 8 12 13 20 22
outputCopy
2
inputCopy
13 0 37
20 20 80 70 70 70 420 5 1 5 1 60 90
outputCopy
3
Note
In the first example you can invite two students with levels 2 and 11. Then you can split the students into two stable groups:

[1,1,2,5,8,11,12,13],
[20,22].
In the second example you are not allowed to invite new students, so you need 3 groups:

[1,1,5,5,20,20]
[60,70,70,70,80,90]
[420]

solution

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 200010;
LL a[maxn];
int main(){
ios::sync_with_stdio(false);
LL n, k, x; cin>>n>>k>>x;
for(LL i = 1; i <= n; i++)cin>>a[i];
sort(a+1,a+n+1);
LL ans = 1;
vector<LL>vc;
for(LL i = 2; i <= n; i++){
if(a[i]-a[i-1]>x){
LL t = (a[i]-a[i-1]-1)/x;
vc.push_back(t);
ans++;
}
}
sort(vc.begin(),vc.end());
LL len = vc.size();
for(LL i = 0; i < len; i++){
if(k-vc[i]>=0){
k-=vc[i];
ans--;
}else{
break;
}
}
cout<<ans<<"\n";
return 0;
}


标签:vc,20,students,LL,CF,727,levels,Groups,stable
From: https://blog.51cto.com/gwj1314/6044583

相关文章

  • CF1693 ABCD 题解
    题目链接:https://codeforces.com/contest/1693这场的题都非常好啊……因为现在是从div1开始做了,所以可能刚开始会有点吃力(这场我就会做一个1B呜呜呜)1A先把后缀的极......
  • 每日一道思维题——CF1761C - Set Construction
    题意:存在一个n×n的01矩阵(i,j)处值为1代表Ai 是Aj的真子集,求出这个集合A思路:我们在一开始的时候将每个位置赋初值,若i处的值是j的真子集将i处的值赋值给j代码:#inc......
  • CF1511G Chips on a Board
    CF1511GChipsonaBoard比较有启发性的一道题。询问是最简单的nim游戏,不难发现若一列上有两个棋子,那么这两个棋子对于答案是没有贡献的,因此可以令\(c_i\)表示第\(......
  • CF961E 另解
    一种不用思考怎么树状数组/主席树的笨蛋做法将题目的a[i]视作一个横坐标[i-1,i],纵坐标[0,a[i]]的矩形,我们要统计的是二维平面上同时存在的(x,y)与(y,x)对数。这样的对子......
  • CF14D题解
    CF14DTwoPaths题解题目链接传送门题意简述给定一棵树,找出两条不经过相同点的最长路径,使得他们的长度乘积最大。题目分析首先,如果在一棵树上,两条路径没有共同的点,那......
  • CF1785B Letter Exchange 题解(思维+模拟)
    题目链接难度:绿+。题意给定\(t\)组testcase,每组testcase如下。有\(m\)个长度为3的字符串,每个字符都是\(\text{w}\)、\(\text{i}\)、\(\text{n}\)中的一个,一......
  • [CF1190D] Tokitsukaze and Strange Rectangle
    题目描述Thereare$n$pointsontheplane,the$i$-thofwhichisat$(x_i,y_i)$.Tokitsukazewantstodrawastrangerectangularareaandpickallt......
  • [SA记录] CF1073G Yet Another LCP Problem
    一开始刚看这题时感觉什么思路都没有,不过后来做完P4248[AHOI2013]差异和P7409SvT后再看感觉稍微好一点。这3道题都是SA+单调栈的套路。这一种套路看起来似乎基本都是处......
  • CF1139D Steps to One
    StepstoOne初始给一个空的数列,每次随机从\(\left[1,m\right]\)中选一个整数加入数列末尾,求数列\(\gcd=1\)时的期望长度。这是一个期望加莫反的很有意思的题目......
  • CF1333F Kate and imperfection 题解 线性筛
    题目链接:http://codeforces.com/problemset/problem/1333/F题目大意:kate有一个集合S,S中的元素是1到n的整数她认为集合S的一个子集M的集合的不完美值等于\(\max_{a,b\in......