首页 > 其他 > 详细

POJ 2976

时间:2015-06-18 21:50:58      阅读:279      评论:0      收藏:0      [点我收藏+]

http://poj.org/problem?id=2976

01分数规划问题,可以舍掉k组

01分数规划用于解决的经典问题是最优比率生成树

解法见http://www.cnblogs.com/lotus3x/archive/2009/03/21/1418480.html

技术分享
#include <iostream> 
#include <cstdio>
#include <algorithm>

using namespace std;

double eps = 1e-8;

double b[1005], c[1005], d[1005];

int main() {
    int n, k;
    while(~scanf("%d%d", &n, &k)) {
        if(!n && !k) break;
        for(int i = 0; i < n; i++)
            scanf("%lf", &b[i]);
        for(int i = 0; i < n; i++)
            scanf("%lf", &c[i]);
        double L = 0.0;
        double R = 1.0;
        double mid;
        while(R - L > eps) {
            mid = (L + R) / 2;
            for(int i = 0; i < n; i++)
                d[i] = b[i] - mid * c[i];
            double z = 0.0;
            sort(d, d + n);
            for(int i = k; i < n; i++)
                z += d[i];
            if(z > eps) L = mid;
            else R = mid;
        }
        printf("%d\n", (int)(mid*100+0.5));
    }
    return 0; 
}
View Code

 

POJ 2976

原文:http://www.cnblogs.com/xiaohongmao/p/4586842.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!