p2751 Job Processing

如果单单只安排过程1的时间最短,很容易算出来。用优先队列取最小,加上增量后再放回就行。对过程2也进行这样的操作。将过程1第一个完成的在过程2最后一个完成。以样例来说,过程1:1,1,2,2,3,过程2:1,2,3,3,4。那么小的和大的组合用时最少。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <iomanip>
#include <cstring>
#include <map>
#include <queue>
#include <set>
#include <cassert>
#include <stack>
#include <bitset>
#define mkp make_pair
using namespace std;
const double EPS=1e-8;
typedef long long lon;
const lon SZ=1030,INF=0x7FFFFFFF,mod=9901;
int inc[SZ];

struct nd{
    int val,id;
    nd(int a,int b):val(a),id(b){}
    bool operator<(const nd &rbs)const
    {
        return val>rbs.val;
    }
};
struct nnd{
    int val,id;
    nnd(int a,int b):val(a),id(b){}
    bool operator<(const nnd &rbs)const
    {
        return val>rbs.val;
    }
};

int main()
{
    std::ios::sync_with_stdio(0);
    //freopen("d:\\1.txt","r",stdin);
    lon casenum;
    //cin>>casenum;
    //for(lon time=1;time<=casenum;++time)
    {
        int n,num1,num2;
        cin>>n>>num1>>num2;
        priority_queue<nd> pq1;
        priority_queue<nnd> pq2;
        for(int i=1;i<=num1+num2;++i)
        {
            cin>>inc[i];
            if(i<=num1)
            {
                pq1.push(nd(inc[i],i));
            }
            else pq2.push(nnd(inc[i],i));
        }
        vector<int> res1,res2;
        for(int i=0;i<n;++i)
        {
            nd tmp=pq1.top();
            res1.push_back(tmp.val);
            pq1.pop();
            tmp.val+=inc[tmp.id];
            pq1.push(tmp);
        }
        for(int i=0;i<n;++i)
        {
            nnd tmp=pq2.top();
            res2.push_back(tmp.val);
            pq2.pop();
            tmp.val+=inc[tmp.id];
            pq2.push(tmp);
        }
        sort(res1.begin(),res1.end());
        sort(res2.begin(),res2.end());
        cout<<res1[res1.size()-1]<<" ";
        int maxv=0;
        for(int i=0;i<res1.size();++i)
        {
            maxv=max(maxv,res1[i]+res2[res1.size()-i-1]);
        }
        cout<<maxv<<endl;
    }
    return 0;
}

 

posted @ 2018-10-23 15:32  degvx  阅读(156)  评论(0)    收藏  举报