HihoCoder 1053 居民迁移
2024-08-24 22:22:20
居民迁移
时间限制:3000ms
单点时限:1000ms
内存限制:256MB
描述
公元2411年,人类开始在地球以外的行星建立居住点。在第1326号殖民星上,N个居住点分布在一条直线上。为了方便描述,我们设第i个居住点的位置是Xi,其中居住着Yi位居民。随着冬季的到来,一些人口较多的居住点的生态循环系统已经开始超负荷运转。为了顺利度过严冬,殖民星上的居民一致同意通过转移到人口较少的居住点来减轻人口众多的居住点的负荷。
遗憾的是,1326殖民星的环境非常恶劣。在冬季到来前,每个居民点的居民最远能迁移到距离不超过R的居民点。1326殖民星的居民希望知道,如何安排迁移才能使完成迁移后人口最多的居民点人口最少?
注意有可能存在多个居民点位置相同。
输入
第一行包含一个整数T(1 <= T <= 10),代表测试数据的组数。
每组数据的第一行包含2个整数N(1 <= N <= 100000)和R(0 <= R <= 10^9)。
以下N行每行包含两个整数,Xi和Yi(0 <= Xi, Yi, <= 10^9)。
输出
对于每组数据输出迁移后人口最多的居民点人口最少可能的数目。
- 样例输入
-
3
5 1
10 80
20 20
30 100
40 30
50 10
5 10
10 80
20 20
30 100
40 30
50 10
5 20
10 80
50 10
20 20
30 100
40 30 - 样例输出
-
100
50
48
对于每一个点,如果人数超过mid,就把人口右移,缺人口就左移。
如果没有距离限制,就是很普通的二分。
有了距离限制,我们在移动人口时并不知道哪些人移动了多远的距离。
导致状态不好分化。
不如将移动的人和未移动的人分别用一个数组记录,然后移动时优先移动其中一组?
或者加一个单调队列?
blablabla...
最新文章
- cookie操作简单实现
- 使用AutoIT对增加和删除文件属性的实现
- extentreports报告插件与testng集成(二)
- JS-制作网页特效——选项卡效果(水平,点击)
- SQL手册
- HTML随学随机
- 怎么修改git提交过的内容
- TFS 2015 Update 2功能探索
- java与c++的访问权限的问题
- Application.EnableVisualStyles();
- SQLLite 简介
- 06-C语言运算符2
- boost锁的概述
- 【剑指offer】Q32:从1至n整1出现的次数(python)
- windows越用越卡怎么办?(转)
- ASP.NET静态化方法
- JAVA爬虫实践(实践三:爬虫框架webMagic和csdnBlog爬虫)
- 不同系统下的字长------typedef的意义
- 解决idea中找不到程序包和找不到符号的问题
- Android 模仿QQ风格的 UI