居民迁移

时间限制: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...

最新文章

  1. cookie操作简单实现
  2. 使用AutoIT对增加和删除文件属性的实现
  3. extentreports报告插件与testng集成(二)
  4. JS-制作网页特效——选项卡效果(水平,点击)
  5. SQL手册
  6. HTML随学随机
  7. 怎么修改git提交过的内容
  8. TFS 2015 Update 2功能探索
  9. java与c++的访问权限的问题
  10. Application.EnableVisualStyles();
  11. SQLLite 简介
  12. 06-C语言运算符2
  13. boost锁的概述
  14. 【剑指offer】Q32:从1至n整1出现的次数(python)
  15. windows越用越卡怎么办?(转)
  16. ASP.NET静态化方法
  17. JAVA爬虫实践(实践三:爬虫框架webMagic和csdnBlog爬虫)
  18. 不同系统下的字长------typedef的意义
  19. 解决idea中找不到程序包和找不到符号的问题
  20. Android 模仿QQ风格的 UI

热门文章

  1. 对Java 静态代码块的一些了解
  2. seven habits of highly effective people 高效能人士的七个习惯
  3. 笔记——Springboot response、ServletOutputStream、图形验证码显示慢
  4. Android平台利用OpenCL框架实现并行开发初试
  5. java的null
  6. SQL-ALTER-change和modify区别
  7. Java结对编程四则运算一周小结
  8. Routing in ASP.NET Web API
  9. 多线程-模拟阻塞queue队列
  10. angularjs跨域post解决方案