UVALive 3835:Highway(贪心 Grade D)
2024-08-30 09:53:46
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 ;
}
最新文章
- 如何获得WPA握手包&;EWSA破解WPA密码教程[zz]
- [转载]sed 简明教程
- 信号量 sem_undo设置
- linux centos cli all proxy
- Java基础知识强化04:判断101~200之间有多少素数
- Spark on Mesos: 搭建Mesos的一些问题
- Android自定义控件系列(四)—底部菜单(下)
- ubuntu14.04 编译安装highpoint rocketraid 2720驱动
- logback中批量插入数据库的参考代码
- 实现MongoDB读写分离的“读偏好”介绍
- Git&;Version Control
- jQuery和react实现二维码
- 基于C++的成功-失败法演示
- mybatis-servlet.xml配置SpringMVC样板
- centos文件与权限
- python-django rest framework框架之dispatch方法源码分析
- Avoiding post increase or decrease
- PreparedStatement vs Statement
- struts常量<;constant>;说明
- CentOS 报错cannot execute binary file
热门文章
- MySQL--SHOW ENGINE INNODB STATUS
- 用Emoji和照片挑战大众点评,YOBO玩转新点评方式能引领潮流吗?
- delphi控制word 标题 字符和位置
- LeetCode——739. 每日温度
- 吴裕雄--天生自然 PYTHON3开发学习:数字(Number)
- win10系统开发环境安装studio 3T(MongoDB桌面客户端)
- Mariadb-10.2.25 多实例
- Python笔记_第四篇_高阶编程_GUI编程之Tkinter_1.使用Python进行GUI编程的概述
- Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之元组类型(tuple)
- 吴裕雄--天生自然 JAVA开发学习:接口