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);
}
}