poj2728 Desert King(最小生成树+01分数规划=最优比率生成树)
题意
n个点完全图,每个边有两个权值,求分数规划要求的东西的最小值。
(n<=1000)
题解
心态炸了。
堆优化primT了。
普通的就过了。
我再也不写prim了!!!!
咳咳
最优比率生成树板子题。
公式不是很难推吧。
#include<iostream>
#include<cmath>
#include<iomanip>
#include<string.h>
const int N=;
const int inf=0x7fffffff;
using namespace std;
int n,book[N];
double x[N],y[N],h[N],w2[N][N],w1[N][N],ans,dis[N];
double prim(double mid){
double mn;
ans=;
memset(book,,sizeof(book));
int now;
for(int i=;i<=n;i++)
dis[i]=w2[][i]-w1[][i]*mid;
for(int i=;i<=n;i++){
mn=inf;
for(int j=;j<=n;j++)
if(!book[j]&&mn>dis[j]){
now=j;
mn=dis[j];
}
book[now]=;
ans+=mn;
for(int j=;j<=n;j++)
if(!book[j]&&dis[j]>w2[now][j]-w1[now][j]*mid)
dis[j]=w2[now][j]-w1[now][j]*mid;
}
return ans;
}
double kf(int i,int j){
return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
}
int main(){
while(scanf("%d",&n)&&n){
for(int i=;i<=n;i++){
scanf("%lf%lf%lf",&x[i],&y[i],&h[i]);
for(int j=;j<i;j++){
w1[i][j]=w1[j][i]=kf(i,j);
w2[i][j]=w2[j][i]=abs(h[i]-h[j]);
}
}
double l=0.0,r=1000.0,mid;
while(r-l>1e-){
mid=(l+r)/;
if(prim(mid)>=) l=mid;
else r=mid;
}
printf("%.3lf\n",l);
}
}
poj2728 Desert King(最小生成树+01分数规划=最优比率生成树)的更多相关文章
- 【usaco-Earthquake, 2001 Open】 0-1分数规划 & 最优比率生成树
题意:给定n个点m条边,一开始这些边全都是断的,要修一些边使得n个点全部联通.修完一共可以得到F元,修一条边有成本di和时间ti,要使得 得到的钱数 / 总时间 这个比值最大. 参考资料: 红线内的内 ...
- Desert King(01分数规划问题)(最优斜率生成树)
Desert King Time Limit: 3000MS Memory Limit: 65536K Total Submissions:33847 Accepted: 9208 Descr ...
- poj2728 Desert King——01分数规划
题目:http://poj.org/problem?id=2728 第一道01分数规划题!(其实也蛮简单的) 这题也可以用迭代做(但是不会),这里用了二分: 由于比较裸,不作过多说明了. 代码如下: ...
- POJ 2728 Desert King (01分数规划)
Desert King Time Limit: 3000MS Memory Limit: 65536K Total Submissions:29775 Accepted: 8192 Descr ...
- Desert King (poj 2728 最优比率生成树 0-1分数规划)
Language: Default Desert King Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 22113 A ...
- POJ 2728 Desert King ★(01分数规划介绍 && 应用の最优比率生成树)
[题意]每条路径有一个 cost 和 dist,求图中 sigma(cost) / sigma(dist) 最小的生成树. 标准的最优比率生成树,楼教主当年开场随手1YES然后把别人带错方向的题Orz ...
- POJ 2728 Desert King(最优比率生成树 01分数规划)
http://poj.org/problem?id=2728 题意: 在这么一个图中求一棵生成树,这棵树的单位长度的花费最小是多少? 思路: 最优比率生成树,也就是01分数规划,二分答案即可,题目很简 ...
- POJ2728 最小比率生成树/0-1分数规划/二分/迭代(迭代不会)
用01分数规划 + prime + 二分 竟然2950MS惊险的过了QAQ 前提是在TLE了好几次下过的 = = 题目意思:有n个村庄,村庄在不同坐标和海拔,现在要对所有村庄供水,只要两个村庄之间有一 ...
- poj2728 最小比率生成树——01分数规划
题目大意: 有n个村庄,村庄在不同坐标和海拔,现在要对所有村庄供水, 只要两个村庄之间有一条路即可,建造水管距离为坐标之间的欧几里德距离,费用为海拔之差, 现在要求方案使得费用与距离的比值最小,很显然 ...
随机推荐
- Linux进程精讲
进程相关概念 程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu.内存.打开的文件.设备.锁....) 进程,是一个抽象的概念,与操作系统原理联系紧密.进程是活跃的程序,占用系 ...
- ie浏览器下get方式获取数据无效问题
在ie浏览器用get方式获取数据时因为发送得到参数地址都是一样的,所以浏览器会优先从缓存获取数据,而不去服务器请求数据,post由于参数不同所以不会影响. 解决方法: 1. Internet选项-- ...
- iReport5.6.0使用说明
1,需要安装jdk1.7,因为目前还不支持最新的jdk1.8 2,安装好软件之后,打开安装目录下的etc/ireport.conf文件,配置关联自己的jdk1.7的路径,如下: #jdkhome=&q ...
- Scrapy中scrapy.Request和response.follow的区别
在写scrapy的spider类的parse方法的时候,有些链接需要提取出来继续爬取,这里scrapy提供了一些方法可以方便的实现这个功能,总结如下: 假设我们的目标a标签是target_a 方法1: ...
- pugixml读取unicode编码的xml文件的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 实际上在多字节编码的情况下,即以记事本打开显示的ANSI编码的,如下图: pugixml是可以直接读取中文字符的,示例 ...
- Codeforces 987C. Three displays(o(n^2))
刚开始三重循环tle test11.后来想了个双重循环的方法. 解题思路: 1.双重循环一次,用一个一位数组存j和比j小的i的和的最小值. 2.再双重循环一次,找到比j大的数k,更新结果为ans=mi ...
- HTML基础——网站友情链接显示页面
1.列表标签 有序列表:type默认是1,2,3……,reserved指降序排列 <ol type="I" start="" reversed=" ...
- RMAN删除归档脚本
crosscheck archivelog all; delete noprompt expired archivelog all; delete noprompt archivelog un ...
- 【BZOJ4002】[JLOI2015]有意义的字符串 - 矩阵乘法
题意: 给出b,d,n,求$\lfloor(\frac{b+\sqrt{d}}{2})^n\rfloor \mod 999999999999999989$(原题是7528443412579576937 ...
- WebKit.NET-0.5简单应用
最近想用c#做个简单的浏览器工具,但是网站一些内容不支持c#内置的WebBowser控件,于是只能改用其他内核浏览器进行开发,搜索到WebKit.NET这个封装好的浏览器引擎,需求的功能也都有,于是用 ...