VJ题目链接

题意:平面上有n个点,在x轴上放一些点,使得平面上所有点都能找到某个x轴上的点,使得他们的距离小于d。求最少放几个点。

思路:以点为中心作半径为d的圆,交x轴为一个线段。问题转换成用最少的店覆盖所有的线段。经典贪心。按右点从小到大排序,然后从左往右扫,每次选择区间右点就行了。

代码:

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std; #define N 100100 bool eqs(double a, double b) {
return fabs(a-b) < 1e-;
} struct Seg{
double l, r;
void get(int d) {
int x, y;
scanf("%d%d", &x, &y);
double dx = sqrt(d*d-y*y+0.0);
l = x - dx;
r = x + dx;
}
bool operator < (const Seg &b) const {
if (!eqs(r,b.r)) return r < b.r;
return l < b.l;
}
}seg[N]; int main(){
int l;
while (scanf("%d", &l) != EOF) {
int d;
scanf("%d", &d);
int n;
scanf("%d", &n);
for (int i = ; i < n; i++) {
seg[i].get(d);
}
sort(seg, seg+n); int cnt = ;
double now = -0x3f3f3f3f;
for (int i = ; i < n; i++) {
if (now < seg[i].l) {
now = seg[i].r;
cnt++;
}
}
printf("%d\n", cnt);
}
return ;
}

最新文章

  1. 如何获得WPA握手包&amp;EWSA破解WPA密码教程[zz]
  2. [转载]sed 简明教程
  3. 信号量 sem_undo设置
  4. linux centos cli all proxy
  5. Java基础知识强化04:判断101~200之间有多少素数
  6. Spark on Mesos: 搭建Mesos的一些问题
  7. Android自定义控件系列(四)—底部菜单(下)
  8. ubuntu14.04 编译安装highpoint rocketraid 2720驱动
  9. logback中批量插入数据库的参考代码
  10. 实现MongoDB读写分离的“读偏好”介绍
  11. Git&amp;Version Control
  12. jQuery和react实现二维码
  13. 基于C++的成功-失败法演示
  14. mybatis-servlet.xml配置SpringMVC样板
  15. centos文件与权限
  16. python-django rest framework框架之dispatch方法源码分析
  17. Avoiding post increase or decrease
  18. PreparedStatement vs Statement
  19. struts常量&lt;constant&gt;说明
  20. CentOS 报错cannot execute binary file

热门文章

  1. MySQL--SHOW ENGINE INNODB STATUS
  2. 用Emoji和照片挑战大众点评,YOBO玩转新点评方式能引领潮流吗?
  3. delphi控制word 标题 字符和位置
  4. LeetCode——739. 每日温度
  5. 吴裕雄--天生自然 PYTHON3开发学习:数字(Number)
  6. win10系统开发环境安装studio 3T(MongoDB桌面客户端)
  7. Mariadb-10.2.25 多实例
  8. Python笔记_第四篇_高阶编程_GUI编程之Tkinter_1.使用Python进行GUI编程的概述
  9. Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之元组类型(tuple)
  10. 吴裕雄--天生自然 JAVA开发学习:接口