思路:每一个小岛在x轴都可以找到一个区间可以放监控设备,找不到就输出-1,问题就转化成了,找到最少的点使得每一个区间都有一个点,这里要按照区间的右端点从大到小排序,每找到一个新的区间的左端点大于当前区间右端点就要更新比较值并且点的数量加1.
代码:
- #include
- #include
- #include
- #include
- #define x first
- #define y second
- using namespace std;
- const int N=1e4+10;
- typedef pair<double,double>PDD;
- int n;
- double r;
- PDD d[N];
- bool cmp(PDD a,PDD b)
- {
- return a.y
- }
- int main()
- {
- cin>>n>>r;
- for(int i=1;i<=n;i++)
- {
- double x,y,l,r1;
- cin>>x>>y;
- if(y>r)
- {
- cout<<-1;
- return 0;
- }
- double t= sqrt(r*r-y*y);
- l=x-t;
- r1=x+t;
- d[i]={l,r1};
- }
- sort(d+1,d+n+1,cmp);
- int cnt=0;
- double u=-1e9;
- for(int i=1;i<=n;i++)
- {
- if(d[i].x>u)
- {
- u=d[i].y;
- cnt++;
- }
- }
- cout<
-
- return 0;
- }
-
相关阅读:
大数据随记 —— DataFrame 与 RDD 之间的相互转换
ios- Gesture
数据结构--二叉树
一文带你浅入浅出Keepalived
docker部署Prometheus+Cadvisor+Grafana实现服务器监控
数据库系统原理与应用教程(076)—— MySQL 练习题:操作题 160-167(二十):综合练习
转码不易,且学且珍惜!
Linux的常见指令
2024 Jiangsu Collegiate Programming Contest E. Divide 题解 主席树
设计模式 行为型模式 - 观察者模式(六)
-
原文地址:https://blog.csdn.net/m0_62327332/article/details/126403679