CF985C
CF985C
题意:
你要组成N个木桶,组成每个木桶需要K个木块,(第二行给你N*K个木块),使得任意两个木桶之间的差值不超过L的情况,使得所有木桶可以装的水的和最大,输出这个最大和,如果无法满足要求输出0。
解法:
因为众所周知的木板原理,我们考虑贪心,对木板的长度进行排序。
易知,让长度相差小的木板组合比较优。
首先考虑没答案的情况,假设最短的木板为a[0],那么所有木桶中能装水的最小值就确定了为a[0]。所以其他木桶的最短板不能超过a[0]+L,如果范围在a[0]~(a[0]+L)的木板少于N块肯定不行
排序upper_bound求一下即可,假设有pos块。
如满足要求,考虑范围在a[0]~(a[0]+L)木块,我们尽量的使短的木板组合在一起,那么就是[0,k)个组成第一个桶(如果剩余木板还够N-1个),前[K,2k)个组成第二个桶(如果剩余木板还够N-2个)...前[iK,(i+1)*k)个组成第i个桶(如果剩余木板还够N-i个)。如果选取了i个之后,剩余不够再这样组合了,我们直接从这些木块中选取最后的 N-i 块即可。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define LL long long
#define N 100010
int m,n,k,l,a[N];
int main() {
scanf("%d%d%d",&n,&k,&l);
m = n * k;
for(int i = 0 ; i < m ; i++)
scanf("%d",&a[i]);
sort(a,a + m);
int pos = upper_bound(a,a + m,a[0] + l) - a;
LL ans = 0;
if(n <= pos) {
int i;
for(i = 0 ; pos - i * k > n - i ; i++) ans += a[i * k];
for(int j = pos - 1 ; j >= pos - n + i ; j--) ans += a[j];
}
printf("%lld \n",ans);
// system("pause");
return 0;
}
CF985C的更多相关文章
- CF985C Liebig's Barrels 贪心 第二十
Liebig's Barrels time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
随机推荐
- JS基础_全局作用域
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 兼容各种浏览器的hack写法
1.Firefox @-moz-document url-prefix() { .selector { property: value; } }上面是仅仅被Firefox浏览器识别的写法 具体如:@- ...
- SQL学习——LIKE运算符
原文链接 LIKE 作用 在WHERE子句中使用LIKE运算符来搜索列中的指定模式. 有两个通配符与LIKE运算符一起使用: % - 百分号表示零个,一个或多个字符 _ - 下划线表示单个字符 注意: ...
- 解决chrome没有允许添加flash的问题
有时候测试的时候,需要开启flash 但是Chrome一般都是自己弹出来的 现在弹不出来怎么办 自己添加? chrome://settings/content/flash 对不起 根本没有的 怎么解 ...
- 编译luacheck Linux版
最近在写Visual Studio Code的Lua插件,需要把luacheck集成进去.但是luacheck默认只提供了win32版本,见https://github.com/mpeterv/lua ...
- OpenCV_contrib里的Text(自然场景图像中的文本检测与识别)
平台:win10 x64 +VS 2015专业版 +opencv-3.x.+CMake 待解决!!!Issue说明:最近做一些字符识别的事情,想试一下opencv_contrib里的Text(自然场景 ...
- bootstrapTable post提交数据,后台无法接收的问题
解决方法:contentType:"application/x-www-form-urlencoded; charset=UTF-8",
- 聚类算法之MeanShift
机器学习的研究方向主要分为三大类:聚类,分类与回归. MeanShift作为聚类方法之一,在视觉领域有着广泛的应用,尤其是作为深度学习回归后的后处理模块而存在着. 接下来,我们先介绍下基本功能流程,然 ...
- rpm的specs学习
参考 制作rpm包: https://wangbin.io/blog/it/yum-rpm-make.html linux rpm安装mysql: https://www.jianshu.com ...
- git 账号密码
由于git迁移服务地址,而导致无法登陆 首先 git config --system --unset credential.helper 然后执行 git config --global cred ...