题目 考虑对于一个小岛,如果有雷达可以覆盖它,则这些雷达肯定在一个区间里,则原题内容则变为区间选点问题 #include <bits/stdc++.h> using namespace std; int n, d, cnt; struct data { double l, r; }a[1001000]; bool cmp(data a, data b) { if (a.r == b.r) return a.l > b.l; return a.r < b.r; } map <i…
传送门 思路: 采取贪心的思想. 把每个岛屿看作圆心,以雷达的范围 d 为半径,求出与 x 轴的左右两个交点,两交点所夹的区间就需要放置一个雷达,这样就把这道题转换为了区间取点问题.在枚举岛屿时,记录之前最后一个雷达安放的位置 las ,如果岛屿在这个雷达的范围内,就跳过,否则,在该岛屿所在的区间右端点放一个雷达. 为了代码比较好看,我打了一个巨大的结构体. 主函数部分: int main() { n=T.resd();d=T.read(); ;i<=n;i++) { t[i].x=T.read…