原题下载:http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf

题目翻译:

问题描述

  有n个机器,每个机器有2个芯片,每个芯片可以放k个电池。
  每个芯片能量是k个电池的能量的最小值。
  两个芯片的能量之差越小,这个机器就工作的越好。
  现在有2nk个电池,已知它们的能量,我们要把它们放在n个机器上的芯片上,
  使得所有机器的能量之差的最大值最小。

输入格式

  第一行,两个正整数,n和k。
  第二行,2nk个整数,表示每个电池的能量。

输出格式

  一行一个整数,表示所有机器的能量之差的最大值最小是多少。

样例输入

2 3
1 2 3 4 5 6 7 8 9 10 11 12

样例输出

1

样例输入

2 2
3 1 3 3 3 3 3 3

样例输出

2

数据规模和约定

  2nk <= 10^6, 1 <= pi <= 10^9。

题目大意:题目翻译已经足够简略了,不需要再简化了。。

思路分析:2013年World Finals难得的水题啊!首先每台机器分配2k个电池,那它的能量之差最小值一定是最小的两个电池的差。同样的,我们可以对所有电池的能量进行排序,每一台机器的能量之差一定是排序后相邻两节电池的能量之差。看到“最大值最小”的想法一定是二分答案p,如果对于所有\(0\le i \le n\)在排序后的序列中的前\(2Ki\)个电池中,都存在i对电池的能量之差小于等于p,则这个p是合要求的

算法流程:

二分答案p然后贪心判定即可

参考代码:

 //date 20140122
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std; const int maxnk = ; inline int getint()
{
int ans(); char w = getchar();
while('' > w || w > '')w = getchar();
while('' <= w && w <= '')
{
ans = ans * + w - '';
w = getchar();
}
return ans;
} inline int max(int a, int b){return a > b ? a : b;}
inline int min(int a, int b){return a < b ? a : b;} int n, k, nk;
int chips[maxnk]; inline bool check(int w)
{
for(int p = , q = ; q < n; ++p)
{
if(p - > q * * k)return false;
if(chips[p + ] - chips[p] <= w)++p, ++q;
}
return true;
} inline int solve(int l, int r)
{
int mid;
while(l < r)
{
mid = (l + r) >> ;
if(check(mid))r = mid;
else l = mid + ;;
}
return l;
} int main()
{
freopen("low.in", "r", stdin);
freopen("low.out", "w", stdout); while(scanf("%d%d", &n, &k) != EOF)
{
nk = * n * k; int Max = ;
for(int i = ; i <= nk; ++i){chips[i] = getint(); Max = max(Max, chips[i]);}
sort(chips + , chips + nk + );
int ans = solve(, Max);
printf("%d\n", ans);
} return ;
}

没什么需要注意的地方。。

ACM - ICPC World Finals 2013 F Low Power的更多相关文章

  1. ACM - ICPC World Finals 2013 C Surely You Congest

    原题下载:http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 题目翻译: 试题来源 ACM/ICPC World Fin ...

  2. ACM - ICPC World Finals 2013 A Self-Assembly

    原题下载 : http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 这道题其实是2013年我AC的第一道题,非常的开心,这 ...

  3. ACM - ICPC World Finals 2013 H Матрёшка

    原题下载:http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 题目翻译: 问题描述 俄罗斯套娃是一些从外到里大小递减的传 ...

  4. ACM - ICPC World Finals 2013 D Factors

    原题下载:http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 题目翻译: 问题描述 一个最基本的算数法则就是大于1的整数 ...

  5. ACM - ICPC World Finals 2013 I Pirate Chest

    原题下载:http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 题目翻译: 问题描述 海盗Dick受够了在公海上厮杀.抢劫 ...

  6. ACM - ICPC World Finals 2013 B Hey, Better Bettor

    原题下载:http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 这题真心的麻烦……程序不长但是推导过程比较复杂,不太好想 ...

  7. 2013 ACM/ICPC 长春网络赛F题

    题意:两个人轮流说数字,第一个人可以说区间[1~k]中的一个,之后每次每人都可以说一个比前一个人所说数字大一点的数字,相邻两次数字只差在区间[1~k].谁先>=N,谁输.问最后是第一个人赢还是第 ...

  8. 2013 ACM/ICPC 南京网络赛F题

    题意:给出一个4×4的点阵,连接相邻点可以构成一个九宫格,每个小格边长为1.从没有边的点阵开始,两人轮流向点阵中加边,如果加入的边构成了新的边长为1的小正方形,则加边的人得分.构成几个得几分,最终完成 ...

  9. 2016 ACM/ICPC亚洲区大连站 F - Detachment 【维护前缀积、前缀和、二分搜索优化】

    F - Detachment In a highly developed alien society, the habitats are almost infinite dimensional spa ...

随机推荐

  1. php __FILE__,__CLASS__等魔术变量,及实例(转)

    今天看到一个魔术变量,是以前没见过的,__DIR__,我查了查,发现原来是php5.3新增的,顺便举几个例子,解释一下php的魔术变量 1,__FILE__ 文件的完整路径和文件名.如果用在被包含文件 ...

  2. C# 中的 == 和 equals()有什么区别?

    如以下代码: 1 2 3 4 5 6 7 8 9 int age = 25;   short newAge = 25;   Console.WriteLine(age == newAge);  //t ...

  3. 偶然发现的一个地图网站mapbox

    https://www.mapbox.com/ 可以自定义地图,并放到dropbox中.时间有限,更多功能有待发现 可以用他的切片 http://a.tiles.mapbox.com/v3/jambo ...

  4. CLIP PATH (MASK) GENERATOR是一款在线制作生成clip-path路径的工具,可以直接生成SVG代码以及配合Mask制作蒙板。

    CLIP PATH (MASK) GENERATOR是一款在线制作生成clip-path路径的工具,可以直接生成SVG代码以及配合Mask制作蒙板. CLIP PATH (MASK) GENERATO ...

  5. UVA 10635 Prince and Princess

    题意描述:有两个长度分别为p+1和q+1的序列,每个元素中的各个元素互不相同.都是1~n^2之间的整数,求A和B的最长公共子序列.(2<=n<=250,1<=p,q<=n^2) ...

  6. Inlinehook PspCreateProcess

    InineHook通过修改函数指令实现,此次以内核层的PspCreateProcess()为例. 本来是想写NtCreateProcess()的Inlinehook,但是想到PCHunter对于SSD ...

  7. ssh超时断开的解决方法

    当用SSH Secure Shell连接Linux时,如果几分钟没有任何操作,连接就会断开,必须重新登陆才行,每次都重复相同的操作,很是烦人,本文总结了两种解决的方法. 方法1:更改ssh服务器的配置 ...

  8. hdu1715

    http://acm.hdu.edu.cn/showproblem.php?pid=1715 模板大数: #include <stdio.h> #include <string.h& ...

  9. Hadoop 在windows 上伪分布式的安装过程

    第一部分:Hadoop 在windows 上伪分布式的安装过程 安装JDK 1.下载JDK        http://www.oracle.com/technetwork/java/javaee/d ...

  10. JavaPersistenceWithHibernate第二版笔记-第四章-Mapping persistent classes-002identity详解

    一.简介 1.You now have three methods for distinguishing references:  Objects are identical if they occ ...