hdu 4214

来源:互联网 发布:你好我是淘宝客服 编辑:程序博客网 时间:2024/06/05 17:25
题意:伞兵降落到一个星球上,每个人带着一个电台,只要任何一方进入另一方的覆盖范围,双方就可以沟通 联系到所有可以联系的战友,他们会在一个点()回合,用他们的电台合成一个功率更大的电台,新电台的覆盖面积是那些的和 一直这样合并下去,问最后剩下几个电台 所给数据的顺序就是伞兵落地的顺序,只有落地后才能打开电台,在它落地之前,前面的应该合并完。#include<stdio.h>#include<math.h>#define N 200struct node{double x,y,z;}a[N];int main(){int n,k,k1,i,j,num;double x,y,z,s,xx,yy;while(scanf("%d",&n),n!=0){k=0;for(i=1;i<=n;i++){scanf("%lf%lf%lf",&x,&y,&z);while(1){xx=x,yy=y,s=z*z;k1=0;num=1;for(j=0;j<k;j++){double dis=sqrt((x-a[j].x)*(x-a[j].x)+(y-a[j].y)*(y-a[j].y));if(dis<=z||dis<=a[j].z){num++;s+=a[j].z*a[j].z;xx+=a[j].x;yy+=a[j].y;}else{a[k1].x=a[j].x;a[k1].y=a[j].y;a[k1].z=a[j].z;k1++;}}if(num!=1){a[k1].x=xx*1.0/num;a[k1].y=yy*1.0/num;a[k1].z=sqrt(s);x=a[k1].x;y=a[k1].y;z=a[k1].z;}else{a[k1].x=x;a[k1].y=y;a[k1].z=z;k1++;k=k1;break;}k=k1;}}printf("%d\n",k);}return 0;}

0 0