题目:

http://poj.org/problem?id=2728


题解:

二分比率,然后每条边边权变成w-mid*dis,用prim跑最小生成树就行

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define N 1005
using namespace std;
int n,tot;
double x[N],y[N],z[N],dis[N];
bool vis[N];
double mul(double x) {return x*x;}
double dist(int a,int b)
{
return sqrt(mul(x[a]-x[b])+mul(y[a]-y[b]));
}
bool check(double mid)
{
memset(vis,,sizeof(vis));
for (int i=;i<=n;i++) dis[i]=fabs(z[]-z[i])-mid*dist(,i);
vis[]=;
int tot=n-;
int id=-;
double val=0.0,tmp=0.0;
while(tot--)
{
id=-;
for (int i=;i<=n;i++)
{
if(!vis[i])
{
if(id==-) id=i;
else if(dis[id]>dis[i]) id=i;
}
}
tmp+=dis[id];
vis[id]=;
for (int i=;i<=n;i++)
{
if(!vis[i])
{
dis[i]=min(dis[i],fabs(z[i]-z[id])-mid*dist(i,id));
}
}
}
return tmp<=0.0;
}
int main()
{
while (scanf("%d",&n)!=EOF)
{
if (!n) break;
for (int i=;i<=n;i++) scanf("%lf%lf%lf",&x[i],&y[i],&z[i]);
double l=0.0,r=0.0,mid;
for (int i=;i<=n;i++)
r+=fabs(z[i]-z[]);
for(int i=;i<=;i++)
{
mid=(l+r)/2.0;
if (check(mid)) r=mid;
else l=mid; }
printf("%.3lf\n",r);
}
return ;
}

POJ 2728 Desert King | 01分数规划的更多相关文章

  1. POJ 2728 Desert King (01分数规划)

    Desert King Time Limit: 3000MS   Memory Limit: 65536K Total Submissions:29775   Accepted: 8192 Descr ...

  2. POJ 2728 Desert King ★(01分数规划介绍 && 应用の最优比率生成树)

    [题意]每条路径有一个 cost 和 dist,求图中 sigma(cost) / sigma(dist) 最小的生成树. 标准的最优比率生成树,楼教主当年开场随手1YES然后把别人带错方向的题Orz ...

  3. POJ 2728 Desert King 01分数规划,最优比率生成树

    一个完全图,每两个点之间的cost是海拔差距的绝对值,长度是平面欧式距离, 让你找到一棵生成树,使得树边的的cost的和/距离的和,比例最小 然后就是最优比例生成树,也就是01规划裸题 看这一发:ht ...

  4. poj2728 Desert King——01分数规划

    题目:http://poj.org/problem?id=2728 第一道01分数规划题!(其实也蛮简单的) 这题也可以用迭代做(但是不会),这里用了二分: 由于比较裸,不作过多说明了. 代码如下: ...

  5. 【POJ2728】Desert King - 01分数规划

    Description David the Great has just become the king of a desert country. To win the respect of his ...

  6. poj2728 Desert King --- 01分数规划 二分水果。。

    这题数据量较大.普通的求MST是会超时的. d[i]=cost[i]-ans*dis[0][i] 据此二分. 但此题用Dinkelbach迭代更好 #include<cstdio> #in ...

  7. 【POJ2728】Desert King(分数规划)

    [POJ2728]Desert King(分数规划) 题面 vjudge 翻译: 有\(n\)个点,每个点有一个坐标和高度 两点之间的费用是高度之差的绝对值 两点之间的距离就是欧几里得距离 求一棵生成 ...

  8. POJ 2728 Desert King(最优比率生成树 01分数规划)

    http://poj.org/problem?id=2728 题意: 在这么一个图中求一棵生成树,这棵树的单位长度的花费最小是多少? 思路: 最优比率生成树,也就是01分数规划,二分答案即可,题目很简 ...

  9. poj 2728 Desert King (最优比率生成树)

    Desert King http://poj.org/problem?id=2728 Time Limit: 3000MS   Memory Limit: 65536K       Descripti ...

随机推荐

  1. SpringBoot入门(四)——自动配置

    本文来自网易云社区 SpringBoot之所以能够快速构建项目,得益于它的2个新特性,一个是起步依赖前面已经介绍过,另外一个则是自动配置.起步依赖用于降低项目依赖的复杂度,自动配置负责减少人工配置的工 ...

  2. hdu1050Moving Tables(贪心)

    Moving Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  3. CentOS安装nmon

    nmon官网: http://nmon.sourceforge.net/pmwiki.php?n=Main.HomePage 下载nmon16e_mpginc.tar.gz到本地并上传到服务器 tar ...

  4. Java开发工程师(Web方向) - 03.数据库开发 - 第1章.JDBC

    第1章--JDBC JDBC基础 通过Java Database Connectivity可以实现Java程序对后端数据库的访问 一个完整的数据库部署架构,通常是由客户端和服务器端两部分组成 客户端封 ...

  5. Python 关键字参数和可变参数

    关键字参数 如果你有一些具有许多参数的函数,而你又希望只对其中的一些进行指定,那么你可以通过命名它们来给这些参数赋值——这就是python关键字参数(Keyword Arguments)——我们使用命 ...

  6. C for阶乘

    #include <stdio.h> int main(int argc, char **argv) { //定义三个变量 x n s ,n s的初始值为1;      int x;  i ...

  7. 【转载】IOS之禁用UIWebView的默认交互行为

    原文地址 :IOS之禁用UIWebView的默认交互行为 http://my.oschina.net/hmj/blog/111344 UIKit提供UIWebView组件,允许开发者在App中嵌入We ...

  8. codeforces 303C. Minimum Modular(数论+暴力+剪枝+贪心)

    You have been given n distinct integers a1, a2, ..., an. You can remove at most k of them. Find the ...

  9. httpd 2.2.15 添加流媒体模块

    项目中使用的一直都是 httpd  2.2.15  用于播放视频资源,近期有个新产品上线发现快进视频会出现卡顿情况,因此添加了流媒体模块.(怀疑是新产品中的播放器进行了更改) 原文:http://li ...

  10. 基于NABCD评论“探路者”Alpha版作品

    1.分析 N(Need):”为了重温贪吃蛇这一经典游戏,本组的选题定为贪吃蛇游戏,并在此基础上进行了新的创新,将普通的贪吃蛇游戏改为单词版贪吃蛇.市面上的英语单词背记软件对于那些缺少英语学习兴趣.毅力 ...