POJ PKU 2728 最优比率生成树 二分

标签:
pojpku2728最优比率生成树二分it |
分类: 图论 |
题目描述:
给你n个水库,告诉你每个水库的xy坐标(米)和这个水库的花费。
如果两个水库需要连接,连接的费用是这两个水库的高度差的绝对值。
让你连接一些水库,让所有的水库都能到达1号水库并且只有一条通路(就是一棵树)。
然你使每米的花费最少(就是总花费 比 总长度)
解题报告:
题目大意是给一些点,这些点两两之间有距离,有代价。请你找出一个最小生成树,
使代价/距离最小。
最优比率生成树问题。
若记代价/距离为r,则http://s11/middle/64675f5448f46650227c1&690PKU
记http://s6/middle/64675f5448f4498a52d15&690PKU
那么我们将边权变为http://s7/middle/64675f5448f4499d79956&690PKU
至于怎么逼近r,推荐用Dinkelbach(迭代法),不用二分法。二分法慢,且初始上下界太容易出现问题。而Dinkelbach随意取初值即可。
我用的二分。
代码如下:
#include<iostream>
#include<cmath>
using namespace std;
#define size 1000
#define eps 1e-8
#define Max 0x7fffffff
struct pint
{
}v[size];
double g[size][size], d[size];
bool vst[size];
int n;
double prim()
{
}
int main()
{