博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2728 最优比率生成树
阅读量:4547 次
发布时间:2019-06-08

本文共 1051 字,大约阅读时间需要 3 分钟。

  这个题的意思是给你一个连通图, 图上每个点都有连个权值ai, bi让你选一个生成树使得sigma(ai*xi)/sigma(bi*xi)最小, 对比与基础的01规划, 我们假设答案是mid, 然后建立一个图, 其新的边的权值是ai-mid*bi, 然后求解最小生成树,假设其答案是tp, 如果tp>=0,说明还有更优的解, 如果小于0那么解小于mid, 代码如下:

#include 
#include
#include
#include
using namespace std;const int inf = 0x3fffffff;const double eps = 1e-6;const int maxn = 1000+10;int n;struct Vi{ int x, y, z;}vi[maxn];double ai[maxn][maxn], bi[maxn][maxn];double ci[maxn][maxn];double dist(int i, int j){ return sqrt((vi[i].x-vi[j].x)*(vi[i].x-vi[j].x)+(vi[i].y-vi[j].y)*(vi[i].y-vi[j].y));}double mincost[maxn];bool used[maxn];double check(double mid){ for(int i=0; i
= eps) { double mid = (l+r)/2.0; double tp = check(mid); //printf("l=%.3f, r=%.3f, mid=%.3f, tp=%.3f\n", l, r, mid, tp); if(tp>=0.0) l=mid; else r=mid; } printf("%.3f\n", l); } return 0;}

 

转载于:https://www.cnblogs.com/xingxing1024/p/5228817.html

你可能感兴趣的文章
CCF - 201412-3 - 集合竞价
查看>>
bzoj4264: 小C找朋友
查看>>
Mysql表结构操作,crud操作
查看>>
用 Canvas 制作刮刮卡
查看>>
挂载光盘与rpm安装
查看>>
[Android学习系列18]线程,进程,异步的一些事
查看>>
腾讯 AI Lab 计算机视觉中心人脸 & OCR团队近期成果介绍(3)
查看>>
课堂练习-增加信息
查看>>
A little issue in Mathematical Thought from Ancient to Modern Times, Vol. 3
查看>>
Zabbix对接AD域
查看>>
django 将view视图中的对象传入forms表单验证模块中
查看>>
log4net配置
查看>>
中文词频统计及词云制作
查看>>
python面试题No5
查看>>
BeanShell PreProcessor数据base64加密
查看>>
10条建议帮助你创建更好的jQuery插件
查看>>
setPreferredSize和setSize的区别及用法
查看>>
Python简介及编码
查看>>
[转]Android:Layout_weight的深刻理解
查看>>
监听键盘弹出 隐藏
查看>>