BZOJ 3969 low power
Description
有\(n\)个机器,每个机器有\(2\)个芯片,每个芯片可以放\(k\)个电池。每个芯片能量是\(k\)个电池的能量的最小值。两个芯片的能量之差越小,这个机器就工作的越好。现在有\(2nk\)个电池,已知它们的能量,我们要把它们放在\(n\)个机器上的芯片上,使得所有机器的能量之差的最大值最小。
Input
第一行,两个正整数,\(n\)和\(k\)。
第二行,\(2nk\)个整数,表示每个电池的能量。
Output
一行一个整数,表示所有机器的能量之差的最大值最小是多少。
Sample Input
2 3
1 2 3 4 5 6 7 8 9 10 11 12
Sample Output
1
HINT
\(2nk \le 10^{6}, 1 \le p_{i} \le 10^{9}\)。
答案明显满足可二分性,我们可以利用贪心检验。
我们将所有的\(power\)从小到大排个序。然后二分一个结果\(mid\),从左往右枚举\(i\),如果\(power_{i+1}-power_{i} \le mid\),就选择这两个电池作为能量最小的电池装到一个机器人上,直到选出\(2n\)个。最后我们只需要检验是否每个电池都可以在它后面跟上\(K-1\)个电池即可。这个从左往右for一遍贪心即可。
#include<algorithm>
#include<cstdio>
#include<cstdlib>
using namespace std;
#define maxn (1000010)
int N,K,power[maxn],cho[maxn];
inline bool check(int key)
{
int nn = 0;
for (int i = 1;i < (N*K<<1)&&nn < (N<<1);++i) if (power[i+1]-power[i] <= key) cho[++nn] = i,cho[++nn] = i+1,++i;
if (nn != (N<<1)) return false;
for (int i = nn,last = (N*K<<1)+1,tot = 0;i;--i)
{
tot -= cho[i]-last; tot -= K; last = cho[i];
if (tot < 0) return false;
}
return true;
}
int main()
{
freopen("3969.in","r",stdin);
freopen("3969.out","w",stdout);
scanf("%d %d",&N,&K);
for (int i = 1;i <= (N*K<<1);++i) scanf("%d",power+i);
sort(power+1,power+(N*K<<1)+1);
int l = 0,r = 1<<30;
while (l <= r)
{
int mid = (l + r) >> 1;
if (check(mid)) r = mid - 1;
else l = mid + 1;
}
printf("%d",l);
fclose(stdin); fclose(stdout);
return 0;
}
BZOJ 3969 low power的更多相关文章
- BZOJ 3969 Low Power 解题报告
我们首先将所有电池排序,那么我们可以找到一组最优方案,使得一台机器的能量之差是相邻两电池的能量之差. 然后我们就二分这个答案,从前往后贪心地选这个数对,然后看是否所有的数对都是满足条件的. 假设这个数 ...
- bzoj 3969: [WF2013]Low Power 二分
3969: [WF2013]Low Power Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnli ...
- tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)
今天看到一篇关于检测的论文<SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real- ...
- Low Power Consumption Design --- MCU Attention
20161008 note : I have a PCB board called 'A' where a piece of STM8L052C6 and a piece of CC1101 are ...
- Low Power之CPF/UPF
1 CPF The Common Power Format is a standard promoted by the Low Power Coalition at Si2. CPF is also ...
- [CortexM0--stm32f0308]Low Power Mode
问题描写叙述 stm32f0308正常是运行在Run mode下.这样的mode是在reset之后的默认模式.Low Power Mode.即低功耗模式.用于在IC空暇时能够考虑选择进入.使系统耗能减 ...
- PatentTips - Fast awake from low power mode
BACKGROUND Electronic devices, such as electronic book readers ("eBook reader devices"), c ...
- Network management system scheduling for low power and lossy networks
In one embodiment, a network management system (NMS) determines an intent to initialize a request-re ...
- ACM - ICPC World Finals 2013 F Low Power
原题下载:http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 题目翻译: 问题描述 有n个机器,每个机器有2个芯片,每个 ...
随机推荐
- [转]flume-ng+Kafka+Storm+HDFS 实时系统搭建
http://blog.csdn.net/weijonathan/article/details/18301321 一直以来都想接触Storm实时计算这块的东西,最近在群里看到上海一哥们罗宝写的Flu ...
- cocos2dx 2.14使用UUID
1首先要清楚objective-c 与c/ c++混编的规则 关于c/c++/obj-c的混合使用 1)obj-c的编译器处理后缀为m的文件时,可以识别obj-c和c的代码,处理mm文件可以识别obj ...
- linux ptrace II
第一篇 linux ptrace I 在之前的文章中我们用ptrace函数实现了查看系统调用参数的功能.在这篇文章中,我们会用ptrace函数实现设置断点,跟代码注入功能. 参考资料 Playing ...
- VIM中文乱码(_vimrc配置文件备份)
_vimrc在用户目录下: set fileencodings=ucs-bom,utf-,cp936,gb18030,big5,euc-jp,euc-kr,latin1 set encoding=ut ...
- linux下安装redis并自启动
最近需要使用redis作为tomcat集群的session存储介质,因此记录redis的安装步骤.redis是一款高性能的nosql,支持异步将缓存写入到磁盘中,避免宕机的意外情况导致的缓存信息丢失. ...
- jquery easyui easyui-treegrid 使用异步加载数据
jquery easyui easyui-treegrid 使用异步加载数据 jquery easyui easyui-treegrid 异步请求 >>>>>>&g ...
- 如何在OpenWRT环境下做开发
1.搭建开发环境 首先,在执行make menuconfig后,会出现下图: 其中,图中红框部分是我定制路由器的系统版本,大家可以根据不同的路由器进行不同的选择:绿框部分表示我们需要编译一个SDK开发 ...
- jquery ajax跨域取数据
jsonp.js/html 主要是利用jquery ajax和jsonp的datatype 跨站点请求数据,记录~ 同源策略:同端口,同协议,同域:所以ajax不能支持跨域取得数据,解决方案一般是js ...
- java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹
一.简述 zip用于压缩和解压文件.使用到的类有:ZipEntry ZipOutputStream 二.具体实现代码 package com.joyplus.test; import java.io ...
- Angularjs总结(五)指令运用及常用控件的赋值操作
1.常用指令 <div ng-controller="jsyd-controller"> <div style="float:left;width:10 ...