本题描述了一个基因测序任务调度问题,其中任务之间存在依赖关系且各自具有运行时长,同时系统存在最大并发运行数限制。要求计算整个流程的总运行时间。
给定任务的描述格式为
任务名:[依赖任务1,依赖任务2,...]:运行时长
多个任务之间用分号分隔,最后在最后一个任务后用斜杠指定最大并发数。
例如:
一次完整的基因测序流程其实是由很多小任务组成的。任务之间又是有顺序要求的,也就是某个任务需要依赖其他任务先完后自己才能开始执行。例如 c:[a,b] 表示,c 任务依赖 a 任务,也依赖 b 任务,也就是 a 执行完,且 b 任务执行完后,才能执行 c 。
同时基因测序的每个小任务都有自己的运行时长,没有依赖关系的任务可以同时执行。b:[a]:3 表示;b 任务依赖 a 任务,并且 b 任务的运行时长是 3 分钟。
此外,由于计算资源有限,任务在执行的时候是有并发限制的,即最大可同时执行的任务数量有限制。比如当最多只能同时跑 2 个任务时,由于资源不足的任务,只能等前面的任务跑完才能跑。注:如果有同时可以跑的任务,先按先来后到,然后字母序优先处理。
例如 b[a]:3/2 表示 b 任务依赖 a 任务,且 b 任务运行耗时 3 分钟。最大并发数量为2
考题:给你一个基因测序流程,以及最大并发数量,请给出运行此流程的总时间。
用分号分隔的多个依赖关系的描述,及用斜杠分隔的并发数
总运行时间
自己先去除输入中的空格等不可见字符(仅为防止意外,用例本身是不会带空格的)。任务名不会超过 64 字符任务数不超过 100 。每个任务是原子的,后动后不能终止直到完成。
输入
b:[a]:2;c:[a]:3;a:[]:1/1
输出
6
输入
h:[e,f,g]:2;e:[b]:6;f:[c]:6;g:[d]:6;b:[a]:5;c:[a]:5;d:[a]:5;a:[]:3/2
输出
22