点击查看代码
#include<bits/stdc++.h>

using namespace std;
const int N = 1e6 + 10;
int m, n, ans = 0;
int lists[500];
int steps[25];
int machine[25][N];
int last_time[25];
struct information {
int id;
int cost;
}a[25][25];
int main()
{
cin >> m >> n;
for (int i = 1; i <= m * n; i++)
cin >> lists[i];
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> a[i][j].id;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> a[i][j].cost;
for (int i = 1; i <= m * n; i++) {
int now = lists[i];
steps[now]++;
int id = a[now][steps[now]].id, cost = a[now][steps[now]].cost;
int s = 0;
for (int j = last_time[now] + 1; ; j++) {
if (machine[id][j] == 0) s++;
else s = 0;
if (s == cost) {
for (int k = j - cost + 1; k <= j; k++)
machine[id][k] = 1;
if (ans < j) ans = j;
last_time[now] = j;
break;
}
}
}
cout << ans;
return 0;
}

此题的标签为模拟,我们可以定义一些数组和结构体来储存题干的信息:lists[i] 用来表示安排顺序,steps[i] 表示工件i所处的工序数,machine[i][j] 表示第i个机器目前处在时间轴上的第j个时间,last_time[i] 表示第i个工件现在处在时间轴上的时间(之后我会具体解释),a[i][j].id 表示第 i 个工件的第 j 个工序的机器号,a[i][j].cost 表示第 i 个工件的第 j 个工序的加工时间。在进行模拟时,有 3 个条件需要满足:(1)要按照题干的安排顺序进行加工(2)机器的加工时间在时间轴上是从 0 开始向右走(3)每个工件的各个工序在时间轴上对应的时间也是没有重叠部分的,我们之前定义的 last_time[i] 就是为了表示第i个工件目前所处的时间,当下一次轮到工件i的工序时,要从 last_time[i] 开始,这样才能保证在时间上没有冲突。

来分析一下程序的主要部分,用 now 存储 lists[i] 当前对应的工件,steps[now] ++ 后即为此时工件所对应的工序号,使用 id 和 cost 来存储当前的机器号和加工时间,定义一个变量 s ,以便后续判断何时能够加工,循环变量 j 从 last_time[now] + 1 开始(为了满足条件3),进行循环,直到找到能够满足加工时间的时间段,记录下完成目前这项工序的时间j,做以下操作:(1)将满足的这段时间在机器上标记为占用,也就是 machine[id][k] = 1(2)如果此时的时间已经超过了之前的总时间 ans ,就执行 ans = j(因为我们要找的是满足题干所有情况的最短时间,相当于是求交集)(3)将工件 now 的 last_time[now] 更新为 j(4)退出循环

最后找到的ans就是满足条件的最短加工时间

[洛谷] P1065 [NOIP2006 提高组] 作业调度方案的更多相关文章

  1. 洛谷P1083 [NOIP2012提高组Day2T2]借教室

    P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...

  2. 洛谷P1312 [NOIP2011提高组Day1T3]Mayan游戏

    Mayan游戏 题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游 ...

  3. 洛谷 P2678 & [NOIP2015提高组] 跳石头

    题目链接 https://www.luogu.org/problemnew/show/P2678 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布 ...

  4. 洛谷 P1025 & [NOIP2001提高组] 数的划分(搜索剪枝)

    题目链接 https://www.luogu.org/problemnew/show/P1025 解题思路 一道简单的dfs题,但是需要剪枝,否则会TLE. 我们用dfs(a,u,num)来表示上一个 ...

  5. 洛谷P1514 [NOIP2010提高组T4]引水入城

    P1514 引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形,如上图所示,其中每个格子都代表一座城市,每座城 ...

  6. 洛谷P1084 [NOIP2012提高组Day2T3]疫情控制

    P1084 疫情控制 题目描述 H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点. H 国的首都爆发了一种危害性极高的传染病.当局为了控 ...

  7. 洛谷P1315 [NOIP2011提高组Day2T3] 观光公交

    P1315 观光公交 题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号 ...

  8. 洛谷P1313 [NOIP2011提高组Day2T1]计算系数

    P1313 计算系数 题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别 ...

  9. 洛谷P1003 [NOIP2011提高组Day1T1]铺地毯

    P1003 铺地毯 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号 ...

随机推荐

  1. redis主从复制和哨兵机制

    redis主从复制和哨兵机制 技术标签: redis 1.redis主从复制(master/slave模式) 主数据库可以进行读写操作,当写操作导致数据发生变化时会自动将数据同步给从数据库.而一般情况 ...

  2. Fegin 的使用

  3. Spring 应用程序有哪些不同组件?

    Spring 应用一般有以下组件:接口 - 定义功能.Bean 类 - 它包含属性,setter 和 getter 方法,函数等.Spring 面向切面编程(AOP) - 提供面向切面编程的功能.Be ...

  4. 关于 DispatcherServlet.properties 文件

    1.文件位置 2.文件内容 3.文件作用 前端控制器会从 DispatcherServlet.properties 文件中加载 HandlerMapping(处理器映射器).HandlerAdapte ...

  5. JVM的基础知识

    一.JVM的基础知识 1.JVM内存结构: 1.JVM堆内存结构: 2.JVM内存分配: 3.Java的堆机构和垃圾回收: 4.Jvm堆内存配置参数: 5.JVM新生代概念和配置: 6.JVM老生代概 ...

  6. 学习zabbix(四)

    一. 监控知识 1.硬件监控: 机房巡检,远程控制卡,IPMI 2.系统监控: cpu负载查看(指标):uptime(低于3),top(30%-70%), vmstat, mpstat 内存监控: f ...

  7. MATLAB quadprog函数求解二次规划问题

                     [例]求如下二次规划问题. [分析]首先应该把目标函数表示成如下矩阵形式: 这里要细说一下如何写成矩阵形式. 首先,向量x是很容易写出的,因为f(x)包含两个变量x1 ...

  8. post提交的数据有哪几种编码格式?能否通过URL参数获取用户账户密码

    这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [post提交的 ...

  9. 让我为你介绍一个神器:Chimee,一套可扩展的 H5 视频播放器解决方案

    Chimee(读"奇米", [tʃɪ'mɪ:])是由奇舞团开源的一套 H5 视频播放器解决方案,由奇舞团视频云前端团队结合在业务和视频编解码方向的沉淀积累倾心打造. Chimee ...

  10. php 实验一 网页设计

    实验目的: 1.  能够对整个页面进行html结构设计. 2.  掌握CSS+DIV的应用. 实验内容及要求: ***个人博客网页 参考Internet网上的博客网站,设计自己的个人网页,主要包括:图 ...