题意:
     有一个任务,给你提供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分数规划相关推荐

  1. poj2976(0-1分数规划)

    0-1分数规划 设x[i]等于1或0. 则我们所求的比率 rate = ∑(cost[i] * x[i]) / ∑(cost[i] * x[i]), 0≤i<m . z( rate ) = ∑( ...

  2. 点分治问题 ----------- luoguP2942 [WC2010]重建计划 [点分治 + bfs + 单调队列 + 预处理建树 + 二分 + 01分数规划]

    题目链接 解题思路: 1.对于这个Avgvalue=∑e∈sv(e)∣s∣Avgvalue = \frac{\sum_{e\in s}v(e)}{|s|}Avgvalue=∣s∣∑e∈s​v(e)​ ...

  3. 解题报告:AcWing 1165. 单词环(01分数规划、hash、经验优化)

    本题的关键在于: 建图 01分数规划 本题的数据过大,如果直接spfa判断会TLE,因此我们使用经验优化,就是如果所有的点入队的次数过多,比如大于100000,那么我们直接认为它是存在正环的.(免去T ...

  4. 模板 - 判断负环(超时高效优化技巧)、01分数规划

    整理的算法模板合集: ACM模板 判断负环 判正环求最长路,判负环求最短路 int n; // 总点数 int h[N], w[N], e[N], ne[N], idx; // 邻接表存储所有边 in ...

  5. 【图论专题】负环与01分数规划

    整理的算法模板合集: ACM模板 题目列表: 题目 算法 AcWing 904. 虫洞 spfa判负环 AcWing 361. 观光奶牛 最优比率环.01分数规划 AcWing 1165. 单词环 0 ...

  6. POJ2728 Desert King ——01分数规划Dinkelbach迭代法+最小生成树prim算法

    首先,纪念我用Linux系统AC的第一题-   安装这个万恶的NOI Linux系统费了6小时的时间,不过好在最后终于装上了,但是因为我安装的Linux系统比较烂,还遭到了小花儿和js的鄙视,唉,本人 ...

  7. POJ 2728 01分数规划

    题意: 最优比率生成树,要求生成树中的所有边的花费与所有边的长度的比值最小 题解: 01分数规划,详见http://www.cnblogs.com/proverbs/archive/2013/01/0 ...

  8. codevs1183 泥泞的道路(01分数规划)

    1183 泥泞的道路  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description CS有n个小区,并且任意小区之间都有两 ...

  9. P1642 规划 01分数规划+树形DP

    $ \color{#0066ff}{ 题目描述 }$ 某地方有N个工厂,有N-1条路连接它们,且它们两两都可达.每个工厂都有一个产量值和一个污染值.现在工厂要进行规划,拆除其中的M个工厂,使得剩下的工 ...

最新文章

  1. Git 分支 - 变基
  2. HMAC(2)哈希运算消息认证码HMAC
  3. boost::python::converter::arg_to_python相关的测试程序
  4. 【推荐】技术人必看的音视频学习资源清单
  5. POJ 2955 区间DP必看的括号匹配问题,经典例题
  6. android的消息队列机制
  7. Java实训项目4:GUI学生信息管理系统 - 项目结构图
  8. NoSQL Manager for MongoDB 连接配置
  9. springboot属性注入转化为对象
  10. mqtt安装使用教程。(基于rabbitmq插件,docker部署,k8s部署,python教程)
  11. mpAndroidchart 坐标和图表距离_数据对比图表,如何让你的总结报告更具说服力!...
  12. OEM XP 让你的盗版xp像品牌机一样华丽
  13. uniapp扫描二维码问题
  14. mysql中ai是什么意思_MySQL explain用法
  15. 背包客:走遍世界都有家
  16. leetcode 179 最大数
  17. java linux常用命令_Linux常用命令
  18. PTA 7-1 宿舍谁最高?(20分)
  19. win10提示wlan没有有效的ip配置的解决方法
  20. Python 最详细的 socket 相关内容解读

热门文章

  1. BZOJ 2748: [HAOI2012]音量调节【二维dp,枚举】
  2. Indicator Weather 13.06 发布 增加 Kelvin 支持
  3. 今年阿里双十一CDN要冲历史之最,峰值带宽达到5000G+,来高手分析一下他们的CDN节点数量和规模...
  4. MNMBottomPullToRefresh
  5. IT民工——全世界最齐全的条形码库!包括Code128/Code93/Code39/EAN13等22种条形码
  6. 用JSON技术加快AJAX程序开发
  7. 黑马在线教育项目---15-16、datatables插件
  8. 【python】关于控制台的中文输出出现\x形式的问题 python常用包与如何安装
  9. codeforces1027D
  10. FlinkCEP - Complex event processing for Flink