zoukankan      html  css  js  c++  java
  • POJ 2970 The lazy programmer 优先队列

    --------------

    const double EPS = 1e-7;
    const int maxn=150000;
    
    int dcmp(double a,double b){
        if (abs(a-b)<EPS) return 0;
        if (a>b) return 1;
        else return -1;
    }
    struct Dat{
        int a,b,d;
        double c;
        bool operator<(const Dat& rhs)const{
            return a<rhs.a;
        }
        Dat(){c=0;}
        Dat(int x,int y,int z){
            a=x;b=y;d=z;c=0;
        }
    };
    bool cmp(const Dat& a,const Dat& b){
        return a.d<b.d;
    }
    priority_queue<Dat>que;
    
    int n;
    
    Dat a[maxn];
    
    int main(){
        while (~scanf("%d",&n)){
            while (!que.empty()) que.pop();
            for (int i=0;i<n;i++){
                scanf("%d%d%d",&a[i].a,&a[i].b,&a[i].d);
                a[i].c=0;
            }
            sort(a,a+n,cmp);
            double sum=0;
            double T=0;
            for (int i=0;i<n;i++){
                que.push(a[i]);
                T+=(double)a[i].b;
                while (dcmp(T,(double)a[i].d)>0){
                    Dat pr=que.top();
                    que.pop();
                    double x=(T-(double)a[i].d)/(double)pr.a;
                    if (dcmp((double)pr.b/(double)pr.a,pr.c+x)>0){
                        pr.c+=x;
                        sum+=x;
                        T-=x*(double)pr.a;
                        que.push(pr);
                        break;
                    }
                    else {
                        x=(double)pr.b/(double)pr.a-pr.c;
                        pr.c+=x;
                        sum+=x;
                        T-=x*(double)pr.a;
                    }
                }
            }
            printf("%0.2f
    ",sum);
        }
    	return 0;
    }


    --------------

  • 相关阅读:
    java基础篇6之代理
    JavaWeb 过滤器应用之页面静态化
    JavaWeb 之过滤器
    JavaWeb 之监听器
    分页
    Linux 入门
    多条件组合查询
    Service 事务(JdbcUtils 升级)
    BaseServlet 介绍
    dbUtils 工具类介绍
  • 原文地址:https://www.cnblogs.com/cyendra/p/3681634.html
Copyright © 2011-2022 走看看