team2012-E1-mysol-0004

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

{{{
/* 解题报告 //

给出四个点,以这四个点构造四个圆,两两不相交,求半径之和的最大值

做法没什么好说的,推一推的话就发现只有三种情况,不会推的话就直接拍模板

// By 猛犸也钻地 @ 2012.07.18 */
}}}

{{{
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;

double x[4],y[4];

double dist(int i, int j){
    return sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));
}

int main(){
    while(scanf("%lf%lf",x,y)==2){
        for(int i=1;i<4;i++) scanf("%lf%lf",x+i,y+i);
        double ans=1e100;
        ans=min(ans,dist(0,1)+dist(2,3));
        ans=min(ans,dist(0,2)+dist(1,3));
        ans=min(ans,dist(0,3)+dist(1,2));
        printf("%.12f\n",ans);
    }
}
}}}
/* 解题报告 //
给出四个点,以这四个点构造四个圆,两两不相交,求半径之和的最大值
做法没什么好说的,推一推的话就发现只有三种情况,不会推的话就直接拍模板
// By 猛犸也钻地 @ 2012.07.18 */
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
double x[4],y[4];
double dist(int i, int j){
    return sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));
}
int main(){
    while(scanf("%lf%lf",x,y)==2){
        for(int i=1;i<4;i++) scanf("%lf%lf",x+i,y+i);
        double ans=1e100;
        ans=min(ans,dist(0,1)+dist(2,3));
        ans=min(ans,dist(0,2)+dist(1,3));
        ans=min(ans,dist(0,3)+dist(1,2));
        printf("%.12f\n",ans);
    }
}