您的位置:首页 > 运维架构

POJ 2976 Dropping tests(01分数规划)

2015-05-11 11:21 375 查看
01分数规划

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int N = 1005;
typedef long long ll;

int n, k;
double a
, b
, tmp
;

bool cmp(double a, double b) {
return a > b;
}

int main() {
while (~scanf("%d%d", &n, &k) && n || k) {
for (int i = 0; i < n; i++) scanf("%lf", &a[i]);
for (int i = 0; i < n; i++) scanf("%lf", &b[i]);
double l = 0, r = 1e15;
for (int i = 0; i < 200; i++) {
double mid = (l + r) / 2;
for (int j = 0; j < n; j++) tmp[j] = a[j] - b[j] * mid;
sort(tmp, tmp + n, cmp);
double sum = 0;
for (int j = 0; j < n - k; j++) sum += tmp[j];
if (sum < 0) r = mid;
else l = mid;
}
printf("%lld\n", (ll)(l * 100 + 0.5));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: