zoukankan      html  css  js  c++  java
  • USCAO Job Processing 4.2(贪心,不知道叫啥方法)

    题意:A,B两种机器数量m,n,且知道每个机器加工一件产品的用时,B机器加工的产品必须要A先加工过的,那么求s个产品,所需的A,B最加工完成的时间。

    A的时间比较好求,每次选择开始时间+加工时间最小的,然后当前开始时间增加。用priority_queue比较方便实现,同时按产品加工完先后顺序记录时间acost[s];

    B的比较巧妙,同样按A的方法得到bcost[s],然后反过来求bcost[s-i+1]+acost[i]的最大值即时最快完成B的时间。这个好好理解下。

    /*
    
    ID: hubiao cave
    
    PROG: job
    
    LANG: C++
    
    */
    
    
    
    
    #include<iostream>
    
    #include<fstream>
    #include<algorithm>
    #include<string>
    #include<queue>
    #include<functional>
    using namespace std;
    
    
    
    int main()
    
    {
    
    
        ifstream fin("job.in");
    
        ofstream fout("job.out");
        int n,a,b;
        int at,bt;
        int acost[1002]={0};
        int bcost[1002]={0};
        priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >pq;
        priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >bpq;
        fin>>n>>a>>b;
    
        for(int i=0;i<a;i++)
        {
            int m;
            fin>>m;
            pq.push(make_pair(m,m));
        }
        for(int i=0;i<b;i++)
        {
            int m;
            fin>>m;
            pq.push(make_pair(m,m));
        }
    
        for(int i=1;i<n;i++)
        {
            pair<int,int> mini=pq.top();
            acost[i]=mini.first;
            mini.first+=mini.second;
            pq.pop();
            pq.push(mini);
        }
        
        at=pq.top().first;
        acost[n]=at;
    
    
        for(int i=1;i<n;i++)
        {
            pair<int,int> mini=bpq.top();
            bcost[i]=mini.first;
            mini.first+=mini.second;
            bpq.pop();
            bpq.push(mini);
        }
        bcost[n]=bpq.top().first;
        bt=0;
        for(int i=1;i<=n;i++)
        {
            if(acost[i]+bcost[n-i+1]>bt)
                bt=acost[i]+bcost[n-i+1];
        }
        fout<<at<<" "<<bt<<endl;
        return 0;
    
    
    }
  • 相关阅读:
    c#修改config中的AppSettings属性
    C​#​小​实​例​之​-​-​-​C​#​判​断​网​络
    走过2013,走进2014
    前端工程师常去的网站
    正则表达式中文匹配
    浅谈 -webkit-tap-highlight-color 属性
    JS前端开发判断是否是手机端并跳转操作(小结)(转)
    swf文件加密基础(转)
    Object与Dictionary的区别
    关于事件机制的理解
  • 原文地址:https://www.cnblogs.com/cavehubiao/p/3473882.html
Copyright © 2011-2022 走看看