码迷,mamicode.com
首页 > 其他好文 > 详细

poj 2976(01分数规划

时间:2015-09-10 17:20:59      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

题目:每门课有实际成绩a和总成绩b,要求去掉k门课后能得到的平均成绩的最大值。

思路:裸的分数规划题。一个非常经典的解决问题的思路就是把求值变为判定问题,然后进行2分,分数规划就是这类思想的一个应用。、

具体讲解参考此文章:http://blog.csdn.net/hhaile/article/details/8883652

技术分享
/*
* @author:  Cwind
* http://www.cnblogs.com/Cw-trip/
* 蒟蒻只能做几个水题。。
*/
//#pragma comment(linker, "/STACK:102400000,102400000")
#include <iostream>
#include <map>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <vector>
#include <queue>
#include <stack>
#include <functional>
#include <set>
#include <cmath>
using namespace std;
#define IOS std::ios::sync_with_stdio (false);std::cin.tie(0)
#define pb push_back
#define PB pop_back
#define bk back()
#define fs first
#define se second
#define sq(x) (x)*(x)
#define eps (1e-3)
#define IINF (1<<29)
#define LINF (1ll<<59)
#define FINF (1e100)
#define INF 1000000000
const double pi=acos(-1.0);
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<ll,ll> P;

const int maxn=1005;
int n,k;
double a[maxn],b[maxn];
double c[maxn];
bool check(double p){
    for(int i=0;i<n;i++){
        c[i]=a[i]-p*b[i];
    }
    sort(c,c+n,greater<double>());
    double sum=0;
    for(int i=0;i<n-k;i++){
        sum+=c[i];
    }
    if(sum<0) return 0;
    else return 1;
}
int main(){
    freopen("/home/files/CppFiles/in","r",stdin);
    while(cin>>n>>k){
        if(n==0&&k==0) break;
        for(int i=0;i<n;i++){
            scanf("%lf",&a[i]);
            a[i]*=100;
        }
        for(int i=0;i<n;i++){
            scanf("%lf",&b[i]);
        }
        double l=0,r=100;
        while(r-l>eps){
            double mid=(r+l)/2;
            if(check(mid)){
                l=mid;
            }else{
                r=mid;
            }
        }
        printf("%.0f\n",l);
    }
    return 0;
}
View Code

 

poj 2976(01分数规划

标签:

原文地址:http://www.cnblogs.com/Cw-trip/p/4798465.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!