题意:
给出N个城市的坐标,M个雷达的坐标,求用少于K个雷达站覆盖所有城市的最小雷达半径(所有启用的雷达站的半径都一样)
思路:
二分枚举半径,每次枚举得到一组覆盖表,对这张表进行覆盖,看能不能用少于K个雷达覆盖所有城市。
若能向左(半径减小)继续二分,若不能向右(半径增大)继续二分。直到精度误差满足要求二分停止。
代码:
#include <bits/stdc++.h>
#define mid (le+ri)/2;
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int inf=0x3f3f3f3f;
const ll INF=0x3f3f3f3f3f3f3f3fll;
const int maxn=230;
const double eps=1e-7;
int L[maxn*maxn],R[maxn*maxn],U[maxn*maxn],D[maxn*maxn];//节点的上下左右四个方向的链表
int C[maxn*maxn],H[m