poj2728 Desert King --- 01分数规划 二分水果。。
这题数据量较大。普通的求MST是会超时的。
d[i]=cost[i]-ans*dis[0][i]
据此二分。
但此题用Dinkelbach迭代更好
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
#define N 1010 double mp[N][N],c[N][N],x[N],y[N],z[N],e[N][N],d[N];
int vis[N],n; inline double prim(double mid)
{
double tmp,ans=0;
for(int i=0;i<n;i++)
{
vis[i]=0;
for(int j=0;j<i;j++)
e[i][j]=e[j][i]=c[i][j]-mid*mp[i][j];
}
for(int i=1;i<n;i++)
d[i]=e[0][i];
d[0]=0;vis[0]=1;
for(int i=1;i<n;i++)
{
int p;
tmp=100000000;
for(int j=0;j<n;j++)
{
if(!vis[j]&&d[j]<tmp)
{
p=j;
tmp=d[j];
}
}
ans+=tmp;
vis[p]=1;
for(int j=0;j<n;j++)
{
if(!vis[j]&&e[j][p]<d[j])
d[j]=e[j][p];
}
}
return ans;
} int main()
{
int i,j;
double le,ri,mid;
while(scanf("%d",&n)&&n)
{
for(i=0;i<n;i++)
scanf("%lf%lf%lf",&x[i],&y[i],&z[i]);
for(i=0;i<n;i++)
for(j=0;j<i;j++)
{
mp[i][j]=mp[j][i]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
c[i][j]=c[j][i]=z[i]>z[j]?z[i]-z[j]:z[j]-z[i];
}
le=0;ri=1001;//不开心。。这样才干水过
while(ri-le>1e-5)
{
mid=(le+ri)/2.0;
// printf("prim:%lf\n",prim(0,mid));
if(prim(mid)>0)
le=mid;
else ri=mid;
}
printf("%.3f\n",mid);
}
return 0;
}
poj2728 Desert King --- 01分数规划 二分水果。。的更多相关文章
- 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 ...
- POJ 2728 Desert King ★(01分数规划介绍 && 应用の最优比率生成树)
[题意]每条路径有一个 cost 和 dist,求图中 sigma(cost) / sigma(dist) 最小的生成树. 标准的最优比率生成树,楼教主当年开场随手1YES然后把别人带错方向的题Orz ...
- 【POJ2728】Desert King - 01分数规划
Description David the Great has just become the king of a desert country. To win the respect of his ...
- POJ 2728 Desert King 01分数规划,最优比率生成树
一个完全图,每两个点之间的cost是海拔差距的绝对值,长度是平面欧式距离, 让你找到一棵生成树,使得树边的的cost的和/距离的和,比例最小 然后就是最优比例生成树,也就是01规划裸题 看这一发:ht ...
- POJ 2728 Desert King | 01分数规划
题目: http://poj.org/problem?id=2728 题解: 二分比率,然后每条边边权变成w-mid*dis,用prim跑最小生成树就行 #include<cstdio> ...
- 【POJ2728】Desert King(分数规划)
[POJ2728]Desert King(分数规划) 题面 vjudge 翻译: 有\(n\)个点,每个点有一个坐标和高度 两点之间的费用是高度之差的绝对值 两点之间的距离就是欧几里得距离 求一棵生成 ...
- POJ2728 最小比率生成树/0-1分数规划/二分/迭代(迭代不会)
用01分数规划 + prime + 二分 竟然2950MS惊险的过了QAQ 前提是在TLE了好几次下过的 = = 题目意思:有n个村庄,村庄在不同坐标和海拔,现在要对所有村庄供水,只要两个村庄之间有一 ...
- POJ - 3111 K Best 0-1分数规划 二分
K Best Time Limit: 8000MS Memory Limit: 65536K Total Submissions: 12812 Accepted: 3290 Case Time ...
随机推荐
- FileProvider是个什么东西?
FileProvider是个什么东西? 在<读取并监控文件的变化>中,我们通过三个简单的实例演示从编程的角度对文件系统做了初步的体验,接下来我们继续从设计的角度来继续认识它.这个抽象的文件 ...
- secedit
secedit /export /cfg mytemplate.inf /log mylog.txt http://www.oracle-base.com/dba/script.php?categor ...
- oracle 和informix 的基础区别
1:查看表空间 select b.file_name 物理文件名, b.tablespace_name 表空间, b.bytes/1024/1024 大小M, (b.bytes-sum(nvl(a.b ...
- Android stagefright与opencore对比
[转载至其它博客] http://blog.csdn.net/djy1992/article/details/9339917 1引言 Android froyo版本多媒体引擎做了变动,新添加了st ...
- webpack入门笔记
此为第一篇主要是webpack入门笔记: http://if-true.com/2015/10/16/webpack-tutorial-translate.html
- Robotium双client測试框架
互联网的本质就是信息交换.移动互联网更是如此, 所以很多移动互联网的服务类应用中有着身份地位不同的两种用户(比如:交易中的买家和卖家, 教学中的老师和学生, 打车中的车主和乘客).近期的工作是给公司的 ...
- 自己动手写CPU之第五阶段(3)——MIPS指令集中的逻辑、移位与空指令
将陆续上传本人写的新书<自己动手写CPU>(尚未出版),今天是第17篇.我尽量每周四篇 5.4 逻辑.移位操作与空指令说明 MIPS32指令集架构中定义的逻辑操作指令有8条:and.and ...
- POJ2553-The Bottom of a Graph
id=2553">主题链接 题意:求解Bottom(G).即集合内的点能够互相到达. 思路:有向图的强连通.缩点,找出出度为0的点,注意符合的点要按升序输出. 代码: #include ...
- JS 更改表单的提交时间和Input file的样式
JS转换时间 function renderTime(data) { var da = eval('new ' + data.replace('/', '', 'g').replace('/', '' ...
- 关于新装ubuntu系统update失败和build-essential失败的解决办法
我是12月4日在新电脑上的vmware-workstation 10 上安装的ubuntu14.04LTS,但安装后再校园环境下总是build-essential失败,上网一查,说是要先update, ...