POJ-2976

来源:互联网 发布:安卓处理json实体类 编辑:程序博客网 时间:2024/05/17 05:07

最大化平均值,基本和书上的题型一模一样的,直接二分平均值就好了

#include<cstdio>#include<algorithm>using namespace std;namespace{int n, k, a[1000], b[1000];double d[1000];const double eps = 0.0001;bool check(double x){for (int i = 0; i < n; i++)d[i] = a[i] - x * b[i];sort(d, d + n);double sum = 0;for (int i = 0; i < n - k; i++)sum += d[n - 1 - i];return sum >= 0;}void solve(){double lb = 0, ub = 1, mid;while (ub - lb > eps){mid = (ub + lb) / 2;if (check(mid))lb = mid;elseub = mid;}printf("%d\n", (int) (lb * 100 + 0.5));}}int main(){while (scanf("%d %d", &n, &k), n){for (int i = 0; i < n; i++)scanf("%d", &a[i]);for (int i = 0; i < n; i++)scanf("%d", &b[i]);solve();}return 0;}


0 0
原创粉丝点击