zoukankan      html  css  js  c++  java
  • Gym

    Gym - 102470A Trick or Treat 三分

    题意

    给定二维平面上(n) 个点,要求在(x) 轴上找一个点使得这(n) 个点中最大距离最小

    坐标以浮点形式给出

    [1 leq n leq 50000 , -200000leq x ,yleq 200000 ]

    分析

    根据题意应该是类似几何性质的题,又由于是在(x) 轴上寻找一个点就可,且范围有限,猜想一下三分答案

    注意这里(L,R) 开大一点

    代码

    pii p[50005];
    int n;
    
    double get_dis(pii a, pii b) {
        return sqrt((a.fi - b.fi) * (a.fi - b.fi) + (a.se - b.se) * (a.se - b.se));
    }
    
    double get_sum(double x) {
        double res = 0;
        for (int i = 0; i < n; i++) {
            res = max(res, get_dis(p[i], make_pair(x, 0)));
        }
        return res;
    }
    
    
    double three() {
        double l = -400000, r = 400000;
        for (int i = 0; i < 100; i++) {
            double mid = (l + r) / 2;
            double mmid = (mid + r) / 2;
            if (get_sum(mid) < get_sum(mmid)) r = mmid;
            else l = mid;
        }
        return l;
    }
    
    
    int main() {
        double x, y;
        while (n = readint()) {
            if (!n) break;
            for (int i = 0; i < n; i++) {
                scanf("%lf%lf", &p[i].fi, &p[i].se);
            }
            double res = three();
            if (equals(res, 0)) res = 0;
            printf("%.9f %.9f
    ", res, get_sum(res));
        }
    }
    
  • 相关阅读:
    图片放大功能
    谈论算法
    socket基础
    js实现快速排序
    mysql死锁问题分析(转)
    MVCC 专题
    ActiveMQ持久化方式(转)
    消息队列中点对点与发布订阅区别(good)
    tomcat下部署activemq(转)
    Android文件下载(实现断点续传)
  • 原文地址:https://www.cnblogs.com/hznumqf/p/13546704.html
Copyright © 2011-2022 走看看