洛谷P1325 雷达安装
考虑对于一个小岛,如果有雷达可以覆盖它,则这些雷达肯定在一个区间里,则原题内容则变为区间选点问题
#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 <int, int> vis;
int main()
{
int ans = 1;
scanf("%d%d", &n, &d);
for (int i = 1; i <= n; i++)
{
double x, y;
scanf("%lf%lf", &x, &y);
a[i].l = x - sqrt(d * d - y * y);
a[i].r = x + sqrt(d * d - y * y);
}
sort(a + 1, a + 1 + n, cmp);
int now = a[1].r;
for (int i = 2; i <= n; i++)
{
if (a[i].l >= now)
ans++, now = a[i].r;
}
printf("%d", ans);
return 0;
}
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步