USACO 2001 OPEN earthquake /// 最优比例生成树
题目大意:
https://www.cnblogs.com/forever97/p/3603572.html
讲解:https://www.jianshu.com/p/d40a740a527e
题解:https://www.cnblogs.com/shuaihui520/p/10278840.html
#include <bits/stdc++.h>
using namespace std;
const double eqs=1e-;
int n,m;
double f;
struct NODE {
int v; double w,t,val;
bool operator <(const NODE& p)const {
return val<p.val;
}
};
vector <NODE> G[];
bool vis[];
double prim(double x) {
memset(vis,,sizeof(vis));
priority_queue <NODE> q;
while(!q.empty()) q.pop();
for(int i=;i<G[].size();i++) {
NODE e=G[][i];
e.val=e.w-x*e.t;
q.push(e);
} vis[]=;
int cnt=;
double X=0.0, Y=0.0;
while(!q.empty()) {
NODE e=q.top(); q.pop();
if(vis[e.v]) continue;
vis[e.v]=;
cnt++; X+=e.w, Y+=e.t;
if(cnt==n-) break;
for(int i=;i<G[e.v].size();i++) {
NODE p=G[e.v][i];
p.val=p.w-x*p.t;
q.push(p);
}
}
return X/Y;
}
int main()
{
while(~scanf("%d%d%lf",&n,&m,&f)) {
f/=1.0*(n-);
while(m--) {
int u,v; double w,t;
scanf("%d%d%lf%lf",&u,&v,&w,&t);
G[u].push_back({v,f-w,t,0.0});
G[v].push_back({u,f-w,t,0.0});
}
double ans=0.0, tmp=0.0;
while() {
ans=prim(tmp);
if(abs(ans-tmp)<eqs) break;
tmp=ans;
}
if(ans>) printf("%.4f\n",ans);
else printf("0.0000");
} return ;
}
USACO 2001 OPEN earthquake /// 最优比例生成树的更多相关文章
- POJ 2728 Desert King(最优比例生成树 二分 | Dinkelbach迭代法)
Desert King Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 25310 Accepted: 7022 Desc ...
- POJ 2728 Desert King (最优比例生成树)
POJ2728 无向图中对每条边i 有两个权值wi 和vi 求一个生成树使得 (w1+w2+...wn-1)/(v1+v2+...+vn-1)最小. 采用二分答案mid的思想. 将边的权值改为 wi- ...
- 01分数规划poj2728(最优比例生成树)
Desert King Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 21766 Accepted: 6087 Desc ...
- poj 2728 Desert King(最优比例生成树)
#include <iostream> #include <cstdio> #include <cmath> #include <cstdlib> #i ...
- poj 2728 最优比例生成树(01分数规划)模板
/* 迭代法 :204Ms */ #include<stdio.h> #include<string.h> #include<math.h> #define N 1 ...
- POJ 2728 Desert King 01分数规划,最优比率生成树
一个完全图,每两个点之间的cost是海拔差距的绝对值,长度是平面欧式距离, 让你找到一棵生成树,使得树边的的cost的和/距离的和,比例最小 然后就是最优比例生成树,也就是01规划裸题 看这一发:ht ...
- poj 2728 Desert King (最小比例生成树)
http://poj.org/problem?id=2728 Desert King Time Limit: 3000MS Memory Limit: 65536K Total Submissio ...
- Desert King(最优比率生成树)
Desert King Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 22717 Accepted: 6374 Desc ...
- 【POJ2728】Desert King 最优比率生成树
题目大意:给定一个 N 个点的无向完全图,边有两个不同性质的边权,求该无向图的一棵最优比例生成树,使得性质为 A 的边权和比性质为 B 的边权和最小. 题解:要求的答案可以看成是 0-1 分数规划问题 ...
随机推荐
- 在响应式布局中,碰到图片不会自动缩放,因此需要一段js脚本
<script> (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchang ...
- docker内的服务无法获取用户真实IP
原文:blog.baohaipeng.top 背景:MySQL数据库和Redis运行在宿主机上(Linux),server运行在docker内,web运行在Nginx内(Nginx运行在docker内 ...
- python操作xls表
1.python读取excel中单元格内容为日期的方式 python读取excel中单元格的内容返回的有5种类型,即上面例子中的ctype: ? 1 ctype : 0 empty,1 string, ...
- docker报错: x509: certificate has expired or is not yet valid
环境:最小化安装centos7 问题:docker 启动没问题,但是查询 镜像时报错 Error response from daemon: Get https://index.docker.io/v ...
- Oracle使用存储过程返回查询游标
如果报表逻辑非常复杂的话, 可以把报表逻辑放到存储过程里,加工一个全局临时表.前端查询的时候只查询临时表即可.只是第一次查询需要忍受加工的时间. --创建存储过程,返回SYS_REFCURSOR CR ...
- Shell 脚本的编码规范
- stdin stdout stderr - 标准 I/O 流
Fd #include <stdio.h> Fd extern FILE *stdin; Fd extern FILE *stdout; Fd extern FILE *stderr; D ...
- RK3288 控制usb摄像头补光GPIO
正常可以通过添加dts配置,再从设备树中读取gpio号,在这里为了简单,直接使用GPIO号,先通过终端测试gpio, 系统自带GPIO控制驱动: 内核已经自带了通用GPIO驱动,可以直接在用户空间操作 ...
- Thunar 右键菜单等自定义
Thunar 右键菜单等自定义 可以使用图形界面或者直接编辑配置文件,二者是等价的. 图形界面: 以给"zip,rar,7z"等文件添加"在此位置使用unar解压缩&qu ...
- springmvc基于注解的权限控制
一.权限码 /** * @Title: AuthCode.java * @Package cn.com.kamfu.auth * @Description: TODO(用一句话描述该文件做什么) * ...