zoukankan      html  css  js  c++  java
  • 01分数规划

    http://www.51nod.com/Challenge/Problem.html#problemId=1257

    #include<bits/stdc++.h>
    #define fi first
    #define se second
    #define INF 0x3f3f3f3f
    #define LNF 0x3f3f3f3f3f3f3f3f
    #define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
    #define pqueue priority_queue
    #define NEW(a,b) memset(a,b,sizeof(a))
    const double pi=4.0*atan(1.0);
    const double e=exp(1.0);
    const double eps=1e-10;
    const int maxn=4e5+8;
    typedef long long LL;
    typedef unsigned long long ULL;
    const LL mod=1e9+7;
    const ULL base=1e7+7;
    const int maxp=26+5;
    using namespace std;
    int w[maxn],p[maxn];
    pair<double,int> d[maxn];
    int main(){
        int n,k;
        scanf("%d%d",&n,&k);
        for(int i=1;i<=n;i++){
            scanf("%d%d",&w[i],&p[i]);
        }
        double l=0.0,r=50001.0;
        double mid;
        double sz;
        LL fz,fm;
        while(l+eps<=r){
            mid=(l+r)/2.0;
            sz=0.0;
            for(int i=1;i<=n;i++){
                d[i].fi=(double)p[i]-mid*w[i];
                d[i].se=i;
            }
            sort(d+1,d+1+n);
            for(int i=n;i>=n-k+1;i--){
                sz+=d[i].fi;
            }
            if(sz>=eps){
                fm=0;
                fz=0;
                for(int i=n;i>=n-k+1;i--){
                    fm+=p[d[i].se];
                    fz+=w[d[i].se];
                }
                l=mid;
            }
            else{
                r=mid;
            }
        }
        LL g=__gcd(fm,fz);
        fm/=g;
        fz/=g;
        cout<<fm<<'/'<<fz<<endl;
    }
  • 相关阅读:
    不高级不能发帖的WPS论坛
    打不开盖子的酸奶
    无意中发现的一个好设计:不浸水的香皂盒
    几件小事
    解决ios微信页面回退不刷新
    require.js
    前端遇到的坑
    gulp详细入门教程
    js 获取当前日期
    模仿微信朋友圈 图片浏览 h5 html5 js
  • 原文地址:https://www.cnblogs.com/Profish/p/11563363.html
Copyright © 2011-2022 走看看