• USACO job


      这道题就是模拟工厂产品的生产过程, 题意如下, 有一种产品需要分别经过机器A和机器B通过,现在给定需要加工的产品的数量和机器A机器B的数量,以及一个机器加工一件产品所需要的时间, 求出机器A 和机器B 工作的最小时间。 由于机器可以同时加工因此我们考虑一个产品, 定义delay[0][j]为机器A中第j太机器加工的用时, 那么对于一个产品可以放进任意一个机器中加工,为了使机器A的工作时间最短我们选取delay[0][j]+time[0][j]最小的来加工当前的零件, 另外使用cost[0][j]表示机器A加工第j个零件所需要的最短时间, 那么第第一个答案就是cost[0][N-1]注意cost[0]数组为递增的,同理我们可以处理处cost[1][j]数组。 对于第二个问题, 我们求出cost[0][j]+cost[N-1-j]的最大值即可。代码如下:

    /*
        ID: m1500293
        LANG: C++
        PROG: job
    */
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    
    using namespace std;
    int N, M[2];
    int time[2][35];   //0为1机器  1为2机器
    int delay[2][35];
    int cost[2][1010];
    
    int main()
    {
        freopen("job.in", "r", stdin);
        freopen("job.out", "w", stdout);
        scanf("%d%d%d", &N, &M[0], &M[1]);
        for(int i=0; i<M[0]; i++)
            scanf("%d", &time[0][i]);
        for(int j=0; j<M[1]; j++)
            scanf("%d", &time[1][j]);
        for(int f=0; f<=1; f++)
        {
            for(int i=0; i<N; i++)   //现在要加工第i个工件
            {
                int cho, tptm=0x3fffffff;
                for(int j=0; j<M[f]; j++)   //选择用哪个机器加工第i个工件
                {
                    if(delay[f][j]+time[f][j] < tptm)
                    {
                        tptm = delay[f][j] + time[f][j];
                        cho = j;
                    }
                }
                delay[f][cho] = delay[f][cho] + time[f][cho];
                cost[f][i] = tptm;
            }
        }
        int res1 = cost[0][N-1];
        int res2 = 0;
        for(int i=0; i<N; i++)
        {
            res2 = max(res2, cost[0][i]+cost[1][N-1-i]);
        }
        printf("%d %d
    ", res1, res2);
        return 0;
    }
  • 相关阅读:
    软件架构设计箴言理解
    解决vs2010没有NET Framework 2.0和3.5
    .NET连接数据库实例
    CSS选择器大全
    SilverLight全屏代码
    SilverLight数字时钟 > 我的博客有SilverLight了
    comboBox设置为只读(只选)
    WinForm 单例模式实例
    标识种子和标识增量
    jQuery固定DIV实现“返回顶部”
  • 原文地址:https://www.cnblogs.com/xingxing1024/p/5161799.html
Copyright © 2020-2023  润新知