poj-2728-Desert King-01分数规划+最小生成树
来源:互联网 发布:免费的空间和域名 编辑:程序博客网 时间:2024/05/29 09:11
01分数规划的题目;
由于是完全图,所以求最小生成树的时候要使用prime算法。
否则的话很容易就超时了。
#include <iostream>#include<algorithm>#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>#include<stack>#include<math.h>using namespace std;#define maxm 1100*1100#define maxn 1100#define eps 0.000001#define zero(x) ((fabs(x)<eps?0:x))#define INF 99999999struct point{ int x; int y; int h;}p[maxn];double dist(int x,int y){ double xx=0; xx=(p[x].x-p[y].x)*(p[x].x-p[y].x); xx+=(p[x].y-p[y].y)*(p[x].y-p[y].y); xx=xx*1.0; return sqrt(xx);}struct list{ double h; double l; double s; friend bool operator < (const list &a,const list &b) { return a.s<b.s; }}maps[maxn][maxn];int m,n;double prime(double mid){ double dis[maxn]; int vis[maxn]; int i,j; for(i=0;i<=n;i++) { dis[i]=INF; vis[i]=0; } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { maps[i][j].s=maps[i][j].h-maps[i][j].l*mid; } } dis[1]=0; double ans; ans=0; while(1) { double minn=INF; int ip; for(i=1;i<=n;i++) { if(vis[i])continue; if(dis[i]<minn) { minn=dis[i]; ip=i; } } if(zero(minn-INF)==0)break; vis[ip]=1; ans+=minn; for(i=1;i<=n;i++) { if(vis[i])continue; dis[i]=min(dis[i],maps[ip][i].s); } } return ans;}int main(){ int i,j; while(~scanf("%d",&n)&&n) { m=0; for(i=1;i<=n;i++)scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].h); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { maps[i][j].h=fabs(p[i].h-p[j].h); maps[i][j].l=dist(i,j); } } double l,r,mid; l=0; r=100; mid=(l+r)/2; while(zero(r-l)>0) { mid=(l+r)/2; if(prime(mid)>0)l=mid; else r=mid; } printf("%.3f\n",mid); } return 0;}
0 0
- poj-2728-Desert King-01分数规划+最小生成树
- POJ 2728 Desert King 最小生成树 分数规划
- POJ 2728 Desert King(01分数规划+二分+最小生成树-Prim)
- poj 2728 Desert King 最优比率生成树 分数规划
- 【分数规划,最优比率生成树】POJ 2728 Desert King
- poj Desert King 最优比例生成树 01分数规划
- 【POJ 2728】[01分数规划]Desert King
- 【分数规划-最小比例生成树】POJ2728[Desert King]题解
- poj 2728 Desert King(最优比率生成树,01分数规划)
- 【POJ】2728 Desert King 最优比率生成树——01分数规划【经典】
- POJ 2728 Desert King (最优比率生成树---01分数规划)
- POJ 2728-Desert King(01分数规划_最优比率生成树)
- POJ 2728 Desert King 01分数规划 最优比率生成树
- POJ 2728 Desert King (最优比率生成树 01分数规划问题)
- Poj 2728 Desert King【最优比例生成树/01分数规划】
- poj 2728 Desert King (最优比率生成树/01分数规划)
- poj 2728 Desert King(01分数规划--最优比率生成树)
- 【POJ】2728 Desert King 分数规划
- 男人八题总结
- JSB内存管理
- mysql定时任务与存储过程实例
- java的三元运算符
- Kindeditor编辑器 jsp上传错误解决方法 与struts2冲突整合
- poj-2728-Desert King-01分数规划+最小生成树
- NSPredicate用法总结
- ubuntu上创建程序软链接
- NYOJ13题Fibonacci数
- 【实用随记】表单验证
- UIScrollView的属性总结
- vim简易教程
- 回射程序3(客户端)——客户服务器不定长接收数据
- 不同应用场景的10个Linux面试问题与解答