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的更多相关文章

  1. CF985C Liebig's Barrels 贪心 第二十

    Liebig's Barrels time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

随机推荐

  1. C#picturebox控件图片以json格式上传java后台保存

    关于winform上传图片到Java后端,保存到数据库,有多种方法,本文主要介绍利用picturebox控件,点击按钮上传图片,将图片转化为base64格式,以json格式上传到Java后台,再从ja ...

  2. 获取windows进程信息及CListCtrl控件(List Control)练习

    环境:VS2010/MFC/对话框 效果图: 目录: 1.  关于windows进程信息获取 2.  CListCtrl的使用 ------------------------------------ ...

  3. JSON格式互转集合 (2)

    public class JSON { public static string DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss"; ...

  4. # 使用scatter()绘制散点图

    使用scatter()绘制散点图 之前写过一篇,使用magic function快速绘图的教程了:https://www.cnblogs.com/jiading/p/11750001.html.但这种 ...

  5. 0502 xss 实验

    0x01 dvwa xss(reflected) 1.1 Security Level: low use the typical <script>alert(1)</script&g ...

  6. JavaWeb-用过滤器修改请求的返回状态码

    问题: 客户SDK对接服务,默认只识别200和非200的请求状态码.需要修改当前应用的状态码(如将201转为200) 解决方案:通过扩展HttpServletResponseWrapper,获取到每个 ...

  7. BRD——>MRD——>PRD,产品经理三大文档概念详解及前后逻辑

    转自:https://blog.csdn.net/neikutaixiao/article/details/40819445 商业需求文档Business Requirement DocumentBR ...

  8. 在线播放mp4

    在线播放mp4 1.准备好支持再网页上播放的mp4格式 AVC(h264) 格式的mp4 2.用ckplayer控制播放 (1)到ckplayer下载js.如:http://www.ckplayer. ...

  9. Windows Ping | Tracert 's Bat 脚本并行测试

    系统:windows 需求:测试多台PC输出三个网站并行ping.tracert结果,多台PC同时进行. 说明:以www.baidu.com.www.sina.com.cn.www.tencent.c ...

  10. 【转】char data[0]用法总结

    @2019-07-31 struct MyData { int nLen; ]; }; 开始没有理解红色部分的内容,上网搜索下,发现用处很大,记录下来. 在结构中,data是一个数组名:但该数组没有元 ...