标签:rip table sed figure poj2728 people script ever idt
Time Limit: 3000MS | Memory Limit: 65536K | |
Total Submissions: 26009 | Accepted: 7219 |
Description
Input
Output
Sample Input
4 0 0 0 0 1 1 1 1 2 1 0 3 0
Sample Output
1.000
Source
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<cmath> 6 using namespace std; 7 const double acc=1e-7; 8 const double inf=1e15; 9 int n; 10 struct data{ 11 double x,y,z; 12 }node[1010]; 13 double l,r,mid; 14 double dis[1010][1010],h[1010][1010],w[1010]; 15 bool check[1010]; 16 double ds(double x1,double y1,double x2,double y2){ 17 return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); 18 } 19 double prim(double c){//coefficient-系数 20 double ret=0.0; 21 for(int i=1;i<=n;i++) w[i]=inf;//double 赋初值 22 memset(check,0,sizeof(check)); 23 w[1]=0.0; 24 for(int i=1;i<=n;i++){ 25 double mn=inf; 26 int k; 27 for(int j = 1;j<=n;j++) 28 if(!check[j]&&w[j]<mn) mn=w[j],k=j; 29 check[k]=1; 30 ret+=mn; 31 for(int j=1;j<=n;j++) 32 if(!check[j]&&w[j]>h[k][j]-c*dis[k][j]) 33 w[j]=h[k][j]-c*dis[k][j]; 34 } 35 return ret; 36 } 37 int main(){ 38 while(scanf("%d",&n)){ 39 if(!n) return 0; 40 for(int i=1;i<=n;i++){ 41 scanf("%lf%lf%lf",&node[i].x,&node[i].y,&node[i].z); 42 for(int j=1;j<=i;j++){ 43 dis[i][j]=dis[j][i]=ds(node[i].x,node[i].y,node[j].x,node[j].y); 44 h[i][j]=h[j][i]=abs(node[i].z-node[j].z); 45 } 46 } 47 l=0.0; 48 r=10000.0; 49 while(r-l>acc){ 50 mid=(l+r)*1.0/2; 51 if(prim(mid)>0) l=mid; 52 else r=mid; 53 } 54 printf("%.3f\n",mid); 55 } 56 }
01分数规划+prim POJ2728 Desert King
标签:rip table sed figure poj2728 people script ever idt
原文地址:http://www.cnblogs.com/sdfzxh/p/7203439.html