描述

题解

二分加贪心。先确保前 ii 桶可以分配为相邻的 kk 个,并且保证 a[i∗k+j]−a[1]<=la[i∗k+j]−a[1]<=l,这样就能保证所有的差不大于 ll,如果不能保证这个条件,说明此时已经无法分配相邻的 kk 个了,而需要将剩下的没有组装的桶先分配一个满足条件的最大的,然后剩下的再分给这些没有组装完成的桶(当然这部分不用代码写出来)。

代码

AC:

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int MAXN = 1e5 + 10;
int n, k, l;
int a[MAXN];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> k >> l;
int tmp = n * k;
for (int i=1;i<=tmp;i++) cin>>a[i];
sort(a+1,a+tmp+1);
if (a[n]-a[1]>l) cout<<"0"<<endl;
else
{
long long ans=0;
for (int i=1,j=n-1;i<=n;i++,j--)
{
if (a[i*k+j]-a[1]<=l) ans+=a[(i-1)*k+1];
else
{
int p=upper_bound(a+(i-1)*k+1,a+tmp+1,a[1]+l)-a-1;
ans+=a[(i-1)*k+1];
while(j--) ans+=a[p--];
break;
}
}
cout<<ans<<endl;
}
return 0;
}

最新文章

  1. gem安装报错解决方法
  2. Module Zero之Nuget包
  3. 22、ASP.NET MVC入门到精通——搭建项目框架
  4. AppCan JSSDK模块扩展
  5. 右下角浮窗&amp;动画效果
  6. maximum-gap(经过了提示)
  7. [转] react-native 之布局篇
  8. Vue 爬坑之路(五)—— 组件进阶
  9. 【前端】jQuery移动端左滑删除
  10. Windows 2008 打开声音重定向来听到远程主机音频
  11. Linux 中提高的 SSH 的安全性
  12. Nancy 自寄宿
  13. idea不显示gradle的视图解决办法
  14. iOS 使用xib定义一个View,修改frame无效问题解决
  15. Ubuntu 18.04学习笔记
  16. BZOJ1163&amp;BZOJ1339[Baltic2008]Mafia——最小割
  17. cf983E NN Country (倍增+dfs序+树状数组)
  18. MyBatis对入参对象的属性空判断
  19. jQuery权威指南(第2版) 学习一 jQuery操作DOM
  20. TensorFlow数据读取方式:Dataset API

热门文章

  1. drf
  2. 关于Prometheus监控的思考:多标签埋点及Mbean
  3. Arduino 处理JSON格式的数据
  4. nyoj 216-A problem is easy ((i + 1) * (j + 1) = N + 1)
  5. Spring Boot: Spring Doc生成OpenAPI3.0文档
  6. python_07
  7. OutOfMemoryError本地线程不足问题分析
  8. tensorflow多层CNN代码分析
  9. sed和awk的简单使用
  10. C语言I博客作业11