POJ-2976-01分数规划,二分
来源:互联网 发布:域名备案需要哪些资料 编辑:程序博客网 时间:2024/05/22 04:51
题目大意:给定n个分数的分子x和分母y,定义average=sigma(x)/sigma(y),先要将n个分数去掉k个,问average最大是多少;
题目解析:二分答案ans,ok判断的时候对x-y*ans进行sort然后在累加得出答案;
AC代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<cmath>using namespace std;struct node{ double a,b;}q[1010];int n,k;double ans;bool cmp(node x,node y){ return x.a-ans*x.b>y.a-ans*y.b;}bool ok(double t){ double a=0,b=0; ans=t; sort(q+1,q+1+n,cmp); for(int i=1;i<=n-k;i++) { a+=q[i].a; b+=q[i].b; } return a/b>t;}int main(){ while(scanf("%d%d",&n,&k)!=EOF&&(n||k)) { for(int i=1;i<=n;i++) scanf("%lf",&q[i].a); for(int i=1;i<=n;i++) scanf("%lf",&q[i].b); double l=0,r=2; while(abs(r-l)>=1e-5) { double mid=(l+r)/2; if(ok(mid)) { l=mid; } else { r=mid; } } printf("%d\n",(int)(l*100+0.5)); } return 0;}
0 0
- poj 2976(01分数规划+二分)
- POJ-2976-01分数规划,二分
- poj 2976 Dropping tests(01分数规划+二分)
- poj 2976(01分数规划搜索+二分答案)
- POJ 2976 Dropping tests (01分数规划+二分)
- POJ 2976 Dropping tests 01分数规划 二分解法
- POJ - 2976 Dropping tests(二分 + 01分数规划)
- POJ 2976 Dropping tests 01分数规划 模板 二分&&Dinkelbach
- POJ 2976 01分数规划
- 01 分数规划 poj 2976
- POJ 2976 Dropping tests【分数规划】【二分搜索】
- K Best poj 3111 (01分数规划---二分搜索)
- POJ 3111 K Best (01分数规划+二分)
- POJ - 3111 K Best (二分 + 01分数规划)
- poj3111- POJ - 3111 K Best (二分 + 01分数规划)
- poj 2976 分数规划
- POJ 2976-Dropping tests(01分数规划_二分||Dinkelbach算法)
- 01分数规划+二分搜索
- CSS3之animation、transition
- Core Animation1-简介
- 深入理解java垃圾回收机制
- Android开发,eclipse常用命令
- Linux系统下安装Python以及搭建科学计算(机器学习)环境(anaconda和spyder)
- POJ-2976-01分数规划,二分
- 关于webview的使用
- BZOJ P4590[Shoi2015]自动刷题机
- ERROR 1100 (HY000): Table 't1' was not locked with LOCK TABLES
- string 写时拷贝的设计思想
- XHR的用法详细解读
- 常见的安全算法
- hdu 1166 敌兵布阵
- 自定义dialog and anim