POJ 2976 (最大化平均值)
2017-04-16 18:49
417 查看
题意:
给出n个题的分数,给定n个二元组(a,b),删除k个二元组,
使得剩下的a元素之和与b元素之和的比率最大(比率最后乘100输出)
though:
a/b = max(m),可以化简为a-m*b ,当a/b最大的时候a-m*b <= 0,所以
二分m。找到精度足够小的解。
给出n个题的分数,给定n个二元组(a,b),删除k个二元组,
使得剩下的a元素之和与b元素之和的比率最大(比率最后乘100输出)
though:
a/b = max(m),可以化简为a-m*b ,当a/b最大的时候a-m*b <= 0,所以
二分m。找到精度足够小的解。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 1005; double eps = 1.0e-7; int n,m; double a[MAXN],b[MAXN]; int main() { //freopen("in.txt","r",stdin); while(scanf("%d%d",&n,&m) != EOF) { if(n == 0 && m == 0) break; for(int i = 0;i < n; i++) scanf("%lf",&a[i]); for(int j = 0;j < n; j++) scanf("%lf",&b[j]); double L = 0,R = 1.0,mid; while (R - L > eps) { mid = (R+L)/2; double temp[MAXN]; for(int i = 0;i < n; i++) temp[i] = a[i] - mid*b[i]; sort(temp,temp+n); double sum = 0; for(int i = m;i < n; i++) sum += temp[i]; if(sum > 0) L = mid; else R = mid; } printf("%.f\n",mid*100); } return 0; }
相关文章推荐
- POJ - 2976 Dropping tests(二分搜索:最大化平均值)
- POJ---2976(二分,最大化平均值详细讲解)
- POJ 2976 Dropping tests——最大化平均值
- POJ 2976 Dropping tests(二分查找 最大化平均值)
- POJ 3111 K Best + poj 2976 Dropping tests (二分, 最大化平均值)
- poj 3111 K Best && poj 2976(最大化平均值)
- POJ 2976 Dropping tests【二分 最大化平均值】
- 二分算法的应用——最大化平均值 POJ 2976 Dropping tests
- poj 2976 Dropping tests(最大化平均值)
- POJ 2976 Dropping tests (最大化平均值)
- 【POJ】2976 - Dropping tests 二分->最大化平均值
- POJ - 2976 Dropping tests 二分 最大化平均值
- POJ - 3111 K Best && POJ - 2976 Dropping tests 最大化平均值(二分||牛顿迭代)
- POJ - 2976 Dropping tests(二分查找,最大化平均值)
- POJ 2976 Dropping tests 0/1分数规划问题 最大化平均值 贪心+二分
- poj 2976 Dropping tests (二分搜索之最大化平均值之01分数规划)
- POJ 2976 Dropping tests(最大化平均值)
- POJ 2976 Dropping tests (最大化平均值)
- POJ 2976 3111(二分-最大化平均值)
- K Best POJ - 3111 (二分最大化平均值,注意用G++提交,不然TLE)