POJ3757 01分数规划
题意:
有一个任务,给你提供n太服务器,让你在这n太服务器中选出k台完成这个任务,要求是每台服务器的工作时间相同,总的花费最小。
思路:
题目中给出对于每台服务器有这个式子:
Total time = Processing time + Transmission time = fi / pi + fi / bi
转化后是: time = fi * (pi + bi) / (pi * bi) 那么也就是说每台服务器的工作速度是
v[i] = (pi * bi) / (pi + bi)
因为所有工作时间是一样的,那么就会有 t = F / sigma(v[i]) (选出K个的)
则总的花费就是
COST = sigma(fi * c[i])
= sigma(v[i] * t * c[i])
= t * sigma(v[i] * c[i])
= F / sigma(v[i]) * sigma(v[i] * c[i])
= F * sigma(v[i] * c[i]) / sigma(v[i])
= sigma(F * v[i] * c[i]) / sigma(v[i])
这样就满足了01分数规划的要求模式了,直接二分就ok了,这个题目注意点精度问题,还有就是二分的上线开大点。
#include<stdio.h>
#include<algorithm>#define eps 0.000001#define N 200000 + 100using namespace std;double X[N];
double V[N];
double D[N];bool OK(double L ,int n ,int k)
{for(int i = 1 ;i <= n ;i ++)D[i] = X[i] - L * V[i];sort(D + 1 ,D + n + 1);double sum = 0;for(int i = 1 ;i <= k ;i ++)sum += D[i];return sum <= 0;
}int main ()
{int n ,k;double f ,p ,b ,c;while(~scanf("%d %d %lf" ,&n ,&k ,&f)){for(int i = 1 ;i <= n ;i ++){scanf("%lf %lf %lf" ,&p ,&b ,&c);V[i] = p * b / (p + b);X[i] = V[i] * c * f;}double low = 0 ,up = 10000000000;double mid ,ans;while(up - low >= eps){mid = (low + up) / 2;if(OK(mid ,n ,k))ans = up = mid;else low = mid;}printf("%.4lf\n" ,ans);}return 0;
}
POJ3757 01分数规划相关推荐
- poj2976(0-1分数规划)
0-1分数规划 设x[i]等于1或0. 则我们所求的比率 rate = ∑(cost[i] * x[i]) / ∑(cost[i] * x[i]), 0≤i<m . z( rate ) = ∑( ...
- 点分治问题 ----------- luoguP2942 [WC2010]重建计划 [点分治 + bfs + 单调队列 + 预处理建树 + 二分 + 01分数规划]
题目链接 解题思路: 1.对于这个Avgvalue=∑e∈sv(e)∣s∣Avgvalue = \frac{\sum_{e\in s}v(e)}{|s|}Avgvalue=∣s∣∑e∈sv(e) ...
- 解题报告:AcWing 1165. 单词环(01分数规划、hash、经验优化)
本题的关键在于: 建图 01分数规划 本题的数据过大,如果直接spfa判断会TLE,因此我们使用经验优化,就是如果所有的点入队的次数过多,比如大于100000,那么我们直接认为它是存在正环的.(免去T ...
- 模板 - 判断负环(超时高效优化技巧)、01分数规划
整理的算法模板合集: ACM模板 判断负环 判正环求最长路,判负环求最短路 int n; // 总点数 int h[N], w[N], e[N], ne[N], idx; // 邻接表存储所有边 in ...
- 【图论专题】负环与01分数规划
整理的算法模板合集: ACM模板 题目列表: 题目 算法 AcWing 904. 虫洞 spfa判负环 AcWing 361. 观光奶牛 最优比率环.01分数规划 AcWing 1165. 单词环 0 ...
- POJ2728 Desert King ——01分数规划Dinkelbach迭代法+最小生成树prim算法
首先,纪念我用Linux系统AC的第一题- 安装这个万恶的NOI Linux系统费了6小时的时间,不过好在最后终于装上了,但是因为我安装的Linux系统比较烂,还遭到了小花儿和js的鄙视,唉,本人 ...
- POJ 2728 01分数规划
题意: 最优比率生成树,要求生成树中的所有边的花费与所有边的长度的比值最小 题解: 01分数规划,详见http://www.cnblogs.com/proverbs/archive/2013/01/0 ...
- codevs1183 泥泞的道路(01分数规划)
1183 泥泞的道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description CS有n个小区,并且任意小区之间都有两 ...
- P1642 规划 01分数规划+树形DP
$ \color{#0066ff}{ 题目描述 }$ 某地方有N个工厂,有N-1条路连接它们,且它们两两都可达.每个工厂都有一个产量值和一个污染值.现在工厂要进行规划,拆除其中的M个工厂,使得剩下的工 ...
最新文章
- Git 分支 - 变基
- HMAC(2)哈希运算消息认证码HMAC
- boost::python::converter::arg_to_python相关的测试程序
- 【推荐】技术人必看的音视频学习资源清单
- POJ 2955 区间DP必看的括号匹配问题,经典例题
- android的消息队列机制
- Java实训项目4:GUI学生信息管理系统 - 项目结构图
- NoSQL Manager for MongoDB 连接配置
- springboot属性注入转化为对象
- mqtt安装使用教程。(基于rabbitmq插件,docker部署,k8s部署,python教程)
- mpAndroidchart 坐标和图表距离_数据对比图表,如何让你的总结报告更具说服力!...
- OEM XP 让你的盗版xp像品牌机一样华丽
- uniapp扫描二维码问题
- mysql中ai是什么意思_MySQL explain用法
- 背包客:走遍世界都有家
- leetcode 179 最大数
- java linux常用命令_Linux常用命令
- PTA 7-1 宿舍谁最高?(20分)
- win10提示wlan没有有效的ip配置的解决方法
- Python 最详细的 socket 相关内容解读
热门文章
- BZOJ 2748: [HAOI2012]音量调节【二维dp,枚举】
- Indicator Weather 13.06 发布 增加 Kelvin 支持
- 今年阿里双十一CDN要冲历史之最,峰值带宽达到5000G+,来高手分析一下他们的CDN节点数量和规模...
- MNMBottomPullToRefresh
- IT民工——全世界最齐全的条形码库!包括Code128/Code93/Code39/EAN13等22种条形码
- 用JSON技术加快AJAX程序开发
- 黑马在线教育项目---15-16、datatables插件
- 【python】关于控制台的中文输出出现\x形式的问题 python常用包与如何安装
- codeforces1027D
- FlinkCEP - Complex event processing for Flink