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;
    
    
    }
  • 相关阅读:
    Linux tomcat 去除项目名端口号直接用ip或者域名访问网站
    Linux SSH 安装Tomcat
    Linux SSH下安装Java并设置环境
    自己把jar包添加到maven仓库中
    eclipse 导入maven项目
    将eclipse左边目录结构改为 树形结构
    htt p第一章概述
    Markdown编辑器 简单使用
    CSS 盒子模型
    CSS 基本样式
  • 原文地址:https://www.cnblogs.com/cavehubiao/p/3473882.html
Copyright © 2011-2022 走看看