POJ3111--K Best
来源:互联网 发布:斯洛文尼亚 旅行 知乎 编辑:程序博客网 时间:2024/06/05 07:01
题目大意:Demy要卖掉珠宝,每样珠宝有两个属性,价值v和重量w。自己留k件,使得k件的价值和除以k件的重量和最大,也就是单位重量的价值最大
分析:和POJ2976一个道理,传送门http://blog.csdn.net/hhhhhhj123/article/details/47865473。另外,这题精度有点高。
代码:
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;#define eps 1e-7const int maxn = 111111;int n, k;double x;struct J{ int a, b; int id; bool operator <(const J & cmp) const { return a-x*b > cmp.a-x*cmp.b; }}j[maxn];bool C(double mid) { x = mid; sort(j, j+n); double tota = 0.0, totb = 0.0; for(int i = 0; i < k; i++) { tota += j[i].a; totb += j[i].b; } return tota/totb > mid;}int main() { while(~scanf("%d%d", &n, &k)) { double mx = 0.0; for(int i = 0; i < n; i++) { scanf("%d%d", &j[i].a, &j[i].b); mx = max(mx, j[i].a*1.0/j[i].b); j[i].id = i+1; } double L = 0.0, R = mx; while(fabs(R-L) > eps) { double mid = (L+R)/2; if(C(mid)) L = mid; else R = mid; } for(int i = 0; i < k; i++) printf("%d%c", j[i].id, i == k-1 ? '\n' : ' '); } return 0;}
0 0
- POJ3111--K Best
- poj3111 K Best
- POJ3111-K Best
- POJ3111 K Best
- POJ3111-K Best
- K Best poj3111
- poj3111-K Best
- POJ3111 K Best 二分搜索
- POJ3111-K Best-最大化平均值
- poj3111 K Best【最大化平均值】
- POJ3111 K Best 最大化平均值(二分)
- POJ3111 K Best(二分 最大化平均值)
- 求改poj3111 K Best二分
- poj3111- POJ - 3111 K Best (二分 + 01分数规划)
- poj3111
- poj3111
- poj3111
- POJ3111
- mysql 数据库备份 还原 导入sql文件的命令方法
- 十佳最受欢迎的编程语言,你擅长几个?
- Python环境搭建
- 谈谈敏捷那些事
- TCP和UDP的区别
- POJ3111--K Best
- 如何理解ContentProvider?(通讯录)
- Azure SLB + httpd + ILB + HAProxy + Atlas + MySQL
- mybatis中的#和$的区别
- 类和动态内存分配
- android-async-http异步出现的问题
- Swift 那些二三事
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- OSI七层模式简单通俗理解