zoukankan      html  css  js  c++  java
  • P1065 作业调度方案——小模怡情,大模伤身

    P1065 作业调度方案

    一个有点费手的“小”%%拟;

    题都差点没读明白……;

    每个机器所能完成的工序是不一样的;

    每个物品完成工序的机器是指定的;

    按照题面说的按时间轴推下去就行了;

    没有时间上界有点难受……

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int maxn=500;
    int m,n;
    int work_list[maxn];
    int list_order[maxn];
    int order_mach[maxn][maxn];
    int work_time[maxn][maxn];
    int last_time[maxn];
    bool mach_sleep[maxn][maxn*100];
    bool check(int t,int cos,int id)
    {
        for(int i=t;i<=t+cos-1;i++)
        {
            if(!mach_sleep[id][i]) return 0;
        }
        for(int i=t;i<=t+cos-1;i++) mach_sleep[id][i]=0;
        return 1;
    }
    int main()
    {
        scanf("%d%d",&m,&n);
        for(int i=1;i<=n*m;i++)scanf("%d",&work_list[i]);
        for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) scanf("%d",&order_mach[i][j]);
        for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) scanf("%d",&work_time[i][j]);
        
        memset(mach_sleep,1,sizeof(mach_sleep));
        for(int i=1;i<=n*m;i++)
        {
            list_order[work_list[i]]++;
            int now_mach=order_mach[work_list[i]][list_order[work_list[i]]];
            int spend_time=work_time[work_list[i]][list_order[work_list[i]]];
            for(int j=last_time[work_list[i]]+1;;j++)
            {
                if(check(j,spend_time,now_ma`ch))
                {
                    last_time[work_list[i]]=j+spend_time-1;
                    break;
                }
            }
        }
        
        int ans=0;
        for(int i=1;i<=n;i++)
        {
            ans=max(ans,last_time[i]);
        }
        printf("%d
    ",ans);
        return 0;
    }
    View Code
  • 相关阅读:
    Part 1R 函数、极限和连续
    Part 1 函数、极限与连续
    C++继承与派生
    VUE笔记
    VUE错误记录
    VUE笔记
    VUE笔记
    VUE笔记
    JS学习笔记
    Node.js笔记 请求方式 GET
  • 原文地址:https://www.cnblogs.com/WHFF521/p/11650138.html
Copyright © 2011-2022 走看看