ZOJ 3993 Safest Buildings (思路)

题意:“吃鸡”,在一个半径为R的大圈里会随机的刷出半径为r的安全区,给n个建筑物,要求输出安全率最高的建筑的编号

思路:考虑R跟r的关系,如果2*r>R,那么以大圈圆心为圆心的2*r-R范围内的建筑的安全概率是相等的应当是100%;如果2*r<R,那么以大圈圆心为圆心的R-2*r范围内的建筑的安全概率是相等的,因为以这个建筑物为圆心所画的半径为r的可覆盖此建筑的刷新范围完全在半径为R-2*r的这个圆中。再考虑本题的关系问题,可以直接预处理出概率相等的边界,然后通过平方关系即可计算出相对关系,代码如下

#include
#include
#include
#include
#include
using namespace std;

int main() {
    int T;
    scanf("%d",&T);
    while(T--) {
        int n,R,r;
        vector ac;
        scanf("%d%d%d",&n,&R,&r);
        int minx=1e9+7,cnt=(R-2*r>=0?R-2*r:2*r-R);
        for(int i=0; i


你可能感兴趣的:(解题报告)