博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
紫书 习题8-11 UVa 1615 (区间选点问题)
阅读量:5823 次
发布时间:2019-06-18

本文共 944 字,大约阅读时间需要 3 分钟。

这个点就是贪心策略中的区间选点问题。

把右端点从大到小排序, 左端点从小到大排序。

每次取区间右端点就可以了, 到不能覆盖的时候就ans++, 重新取点

ps:这道题不考虑精度也可以过

        要着重复习一下区间相关问题了, 包括前面没有例题的知识点的部分

#include
#include
#include
#define REP(i, a, b) for(int i = (a); i < (b); i++)using namespace std;const int MAXN = 112345;struct node{ double l, r; node(double l = 0, double r = 0) : l(l), r(r) {}}a[MAXN];double L, dis;int n;void add(int i, double x, double y){ double t = sqrt(dis * dis - y * y); double l = x - t, r = x + t; a[i] = node(l, r);}bool cmp(node a, node b){ if(a.r != b.r) return a.r < b.r; return a.l > b.l;}int main(){ while(~scanf("%lf%lf%d", &L, &dis, &n)) { REP(i, 0, n) { double x, y; scanf("%lf%lf", &x, &y); add(i, x, y); } sort(a, a + n, cmp); int ans = 1; double ma = a[0].r; REP(i, 1, n) if(a[i].l > ma) { ans++; ma = a[i].r; } printf("%d\n", ans); } return 0;}

转载于:https://www.cnblogs.com/sugewud/p/9819569.html

你可能感兴趣的文章
zabbix 批量web url监控
查看>>
MongoDB CookBook读书笔记之导入导出
查看>>
shell如何快速锁定所有账号
查看>>
HTML 5实现的手机摇一摇
查看>>
Linux 文件IO理解
查看>>
Ninject 2.x细说---2.绑定和作用域
查看>>
30个非常时尚的网页联系表单设计优秀示例
查看>>
使用membership(System.Web.Security)来进行角色与权限管理
查看>>
opticom 语音质量验证白皮书
查看>>
3D实时渲染中的BSP树和多边形剔除
查看>>
Frank Klemm's Dither and Noise Shaping Page: Dither and Noise Shaping In MPC/MP+
查看>>
网络抓包的部署和工具Wireshark【图书节选】
查看>>
Redis在Windows+linux平台下的安装配置
查看>>
Maven入门实战笔记-11节[6]
查看>>
Local declaration of 'content' hides instance variable
查看>>
ASP.NET中 HTML标签总结及使用
查看>>
Linux下日志系统的设计
查看>>
爬虫IP被禁的简单解决方法——切换UserAgent
查看>>
php生成word,并下载
查看>>
紫书 习题8-11 UVa 1615 (区间选点问题)
查看>>