我是靠谱客的博主 糊涂煎蛋,最近开发中收集的这篇文章主要介绍Codeforces#514D(三分,简单二维几何),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#include<bits/stdc++.h>
using namespace std;
const double eps=1e-8;
int n;
struct node{
    double x,y;
}a[1000007];
long double find_r(long double x){
    long double r=0;
    for(int i=1;i<=n;i++){
        r=max(r,(x-a[i].x)*(x-a[i].x)/a[i].y/2+a[i].y/2);//寻找最大的半径
    }
    return r;
}
int main(){
    int flag=0,flag1=0,flag2=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%lf%lf",&a[i].x,&a[i].y);
        if(a[i].y>0&&flag1==0)
            flag1=1,flag++;
        if(a[i].y<0&&flag2==0)
            flag2=1,flag++;
        if(a[i].y<0)
            a[i].y-=2*a[i].y;
    }
    int can=0;
    if(flag==2){
        can=1;
    }
    if(can==1){
        puts("-1");
    }
    else{
        long double l=-1e7,r=1e7,lx,rx,dx;
        while(r-l>eps){//寻找最适中的圆心横坐标
            dx=(r-l)/3.0;
            lx=l+dx;
            rx=r-dx;
            if(find_r(lx)-find_r(rx)<0)
                r=rx;
            else
                l=lx;
        }
        long double x=find_r(r);
        printf("%.8lfn",x);//Lf需用C++14及以上提交,C++11会WA
    }
    return 0;
}

转载于:https://www.cnblogs.com/ldudxy/p/9769132.html

最后

以上就是糊涂煎蛋为你收集整理的Codeforces#514D(三分,简单二维几何)的全部内容,希望文章能够帮你解决Codeforces#514D(三分,简单二维几何)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部