ZOJ 3716 - Ribbon Gymnastics

来源:互联网 发布:hammer.js教程 编辑:程序博客网 时间:2024/05/16 02:00

题意:给出4个点坐标,以4个点为圆心画四个圆,四个圆不能相交,求最大半径和

一共4个点,最短的两条不共点的线段之和即为答案

#include <stdio.h>#include <math.h>typedef struct point{    double x;    double y;    point(double x=0,double y=0):x(x),y(y) {}} point;double s[10];point a[10];double dis(int i,int j){    return sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y));}int main(){    int ct=0;    while(scanf("%lf%lf",&a[0].x,&a[0].y)==2)    {        for(int i=1; i<4; i++)            scanf("%lf%lf",&a[i].x,&a[i].y);        int ct=0;        for(int i=0; i<4; i++)        {            for(int j=i+1; j<4; j++)            {                s[ct]=dis(i,j);                ct++;            }        }        double ans=1e18;        if(s[0]+s[5]<ans)ans=s[0]+s[5];        if(s[1]+s[4]<ans)ans=s[1]+s[4];        if(s[2]+s[3]<ans)ans=s[2]+s[3];        printf("%.10lf\n",ans);    }    return 0;}


原创粉丝点击