POJ - 3111 K Best 平均值最大(01分数规划)
来源:互联网 发布:手机亮度调节软件 编辑:程序博客网 时间:2024/06/11 20:28
题目大意:有n颗珍珠,每颗珍珠有相应的价值和代价,要从中挑出K颗珍珠,使得(这k颗珍珠的总价值/这k颗珍珠的代价 )达到最大
解题思路:平均值最大,要注意精度
给出01分数规划的详细解读
< http://www.cnblogs.com/perseawe/archive/2012/05/03/01fsgh.html>
#include<cstdio>#include<algorithm>#include<cstring>using namespace std;#define maxn 100010int n, k, ans[maxn];double Sum;struct jewels { double v, w, d; int id;}J[maxn];bool cmp(const jewels a, const jewels b) { return a.d > b.d;}bool judge(double mid) { for(int i = 0; i < n; i++) J[i].d = J[i].v - mid * J[i].w; sort(J, J + n, cmp); double t = 0.0; for(int i = 0; i < k; i++) t += J[i].d; return t >= 0;}void solve() { double l = 0, r = 1e7 + 1; while(r - l > 1e-6) { double mid = (l + r) / 2; if(judge(mid)) l = mid; else r = mid; }}int main() { while(scanf("%d%d", &n, &k) != EOF) { for(int i = 0; i < n; i++) { scanf("%lf%lf", &J[i].v, &J[i].w); J[i].id = i + 1; } solve(); printf("%d", J[0].id); for(int i = 1; i < k; i++) printf(" %d", J[i].id); printf("\n"); } return 0;}
0 0
- POJ - 3111 K Best 平均值最大(01分数规划)
- K Best poj 3111 (01分数规划---二分搜索)
- POJ 3111 K Best (01分数规划+二分)
- POJ - 3111 K Best (二分 + 01分数规划)
- poj3111- POJ - 3111 K Best (二分 + 01分数规划)
- POJ 3111 K Best(最大化平均值)
- POJ 3111 - K Best(0/1分数规划)
- poj 3111 K Best && poj 2976(最大化平均值)
- POJ 3111 K Best 二分(最小化平均值)
- poj 3111 K Best(二分-最大化平均值)
- POJ 3111 K Best 最大化平均值
- POJ 3111 K Best(最大化平均值)
- POJ 3111 K Best 【二分:最大化平均值】
- POJ 3111 K Best 二分 最大化平均值
- poj 3111 K Best 【0-1分数规划】 【二分 or Dinkelbach迭代】
- POJ 3111 K Best(二分搜索,最大化平均值)
- poj 3111 K Best 二分搜索 最大化平均值
- POJ 3111 K Best(二分——最大化平均值)
- tp3.2.2中的RBAC
- HDU-1013-Digital Roots(Java && 大数 && 数根)
- linux操作系统-3进程管理(1)
- hihoCoder 1143 : 骨牌覆盖问题·一 矩阵快速幂
- java跳转外部友情链接,去除链接前的Java工程名
- POJ - 3111 K Best 平均值最大(01分数规划)
- StringBuffer类常见方法
- Eclipse 配置Servers及运行
- DB2 常用日期
- 黑马程序员 正则表达式
- 去除List列表中重复值(3种解决方法)
- 自适应弹出框-垂直居中
- JAVA 创建TXT文件,写入文件内容,读取文件内容
- Collections,泛型,File,IO流,字节/符输入输出流