博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2728 Desert King
阅读量:4887 次
发布时间:2019-06-11

本文共 1580 字,大约阅读时间需要 5 分钟。

还比较好做的题,直接01分数规划二分答案即可,n小完全图用prim

然而

cnmd

double不可以用memset初始化我透

#include
#include
#include
#include
#include
using namespace std;const int N=1007;const double eps=1e-6;struct city{ int x,y,v;}c[N];double rr[N][N],cost[N][N],a[N][N],mid,d[N],ans,l,r;int n;bool v[N];double len(int x,int y){ return sqrt((c[x].x-c[y].x)*(c[x].x-c[y].x)+(c[x].y-c[y].y)*(c[x].y-c[y].y));}int main(){ //freopen("in","r",stdin); //freopen("out.out","w",stdout); while(1){ double num=0.0; scanf("%d",&n); if(n==0)break; for(int i=1;i<=n;i++){ scanf("%d%d%d",&c[i].x,&c[i].y,&c[i].v); } for(int i=1;i<=n;i++) for(int j=i;j<=n;j++){ rr[j][i]=rr[i][j]=len(i,j); num+=(cost[i][j]=cost[j][i]=abs(c[i].v-c[j].v)); } l=0.0,r=100; while(l+eps<=r){ mid=(l+r)/2; ans=0; for(int i=1;i<=n;i++) for(int j=i;j<=n;j++){ if(i==j)a[i][j]=0x3f3f3f3f; else a[i][j]=a[j][i]=cost[i][j]-mid*rr[i][j]; } for (int i = 1; i <= n; i++) d[i] =0x3f3f3f3f; memset(v,0,sizeof(v)); d[1]=0; while(1){ int x=0; for(int j=1;j<=n;j++) if(!v[j]&&(x==0||d[j]
=0)l=mid; else r=mid; } printf("%.3f\n",l); } return 0;}

 

转载于:https://www.cnblogs.com/Hikigaya/p/10884360.html

你可能感兴趣的文章
APICloud开发小技巧(一)
查看>>
UVa548
查看>>
如何在SpringBoot中集成JWT(JSON Web Token)鉴权
查看>>
python的pydoc与help
查看>>
js动画实现透明度动画
查看>>
css3实现圆形逐渐减少动画
查看>>
D24_02_页面驻留(page Frame)
查看>>
基于Boost无锁队列实现的内存池
查看>>
HDU-4861-Couple doubi(数学题,难懂!难懂!)
查看>>
sublime text 输入法不跟随光标
查看>>
java多态
查看>>
highchart 图标 时钟的使用
查看>>
牛客OI赛制测试赛2(0906)
查看>>
1005—I Think I Need a Houseboat
查看>>
java的Timer定时器任务
查看>>
第6章 当c++爱上面向对象
查看>>
hadoop伪分布式环境搭建
查看>>
广域网远程开机教程 测试
查看>>
爬取大众点评
查看>>
LeetCode 66. Plus One
查看>>