思路:每一个小岛在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;
- }
-
相关阅读:
摄影构图:人像摄影和风景摄影的一些建议
VH03型多功能采集仪
【HBZ分享】AQS + CAS +LockSupport 实现ReentrantLock的原理
计算机系统导论(持续更新)
如何理解Linux文件IO?
Job System 初探
【vue设计与实现】挂载和更新 4-卸载操作&区分vnode的类型
基于RFbeam的V-LD1-60GHz毫米波雷达传感器数据获取(通过UART串口来控制模块)
【LeetCode】67. 二进制求和
双周赛117(容斥原理、记忆化搜索==>动态规划、分组背包方案数、脑经急转弯)
-
原文地址:https://blog.csdn.net/m0_62327332/article/details/126403679