最大化平均值
时间:2021-02-19 23:43:14
收藏:0
阅读:30
有n个物品的重量和价值分别是wi和vi.从中选出k个物品使得单位重量的价值最大
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; const int INF = 9999999; const int n = 3, k = 2; double v[n] = { 2,3,1 }, w[n] = { 2,5,2 }; bool solve(double x) { double y[n]; for (int i = 0; i < n; i++) { y[i] = v[i] - x * w[i]; } sort(y, y + n); double sum = 0; for (int i = n - 1; i >=n-k; i--) { sum += y[i]; } return sum >= 0; } int main(void) { double lb = 0, ub = INF,mid; for (int i = 0; i < 100; i++) { mid = (lb + ub) / 2; if (solve(mid))lb = mid; else ub = mid; } printf("%.2lf", lb); return 0; }
原文:https://www.cnblogs.com/loliconsk/p/14418600.html
评论(0)