#P1551. 2023.08.30-秋招-第三题-内存分配
-
ID: 50
Type: Default
1000ms
256MiB
Tried: 14
Accepted: 11
Difficulty: 6
Uploaded By:
TaZi
Tags>其他排序
2023.08.30-秋招-第三题-内存分配
题目描述
系统由n个任务组成,任务运行有依赖关系,前序任务执行完毕才可以启动后续任务。任务在启动前申请内存,执行完毕后释放,内存释放后可用于其他任务使用。解除依赖后的任务会直接由操作系统调度,分配内存,进入运行状态。每个任务的运行时间相等。请计算系统所有任务执行所需要的最小内存。
输入
第1行为1个正整数n,表示任务个数,n<20
第2行为n个正整数,表示每个任务所需要的内存大小,0<内存<1000
第3行为n个取值为0或1的数,表示任务0对其他任务的依赖关系,0表示不依赖,1表示依赖
....
第3+n行为n个取值为0或1的数,表示任务n−1对其他任务的依赖关系,0表示不依赖,1表示依赖
输出
输出系统任务执行所需要的最小内存
样例
输入
9
50 50 80 40 40 40 60 60 60
0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 1 0
输出
120
解释
第一行:9,表示有9个任务 第二行: 50 50 80 40 40 40 60 60 60,表示任务t0 08需要的内存大小
第三行:0 0 0 0 0 0 0 0 0,表示t不依赖任务其他任务 第四行:10 0 0 0 0 0 0 0,表示t1依赖t0
第五行:01 0 0 0 0 0 0 0,表示t2依赖t1
~
任务的关系用图表示
40 |
60 |
||||
---|---|---|---|---|---|
t4 | t6 | ||||
↑ | |||||
50 |
80 |
40 |
60 |
||
t0 | t1 | t2 | t3 | t7 | t8 |
↑ | |||||
40 |
|||||
t5 |
- 执行t0,分配m0=50,占用空间[0,50),最大访问地址为50
- 执行t1,分配m1=50,占用空间[0,50),最大访问地址为50
- 并发执行t2和t5,分配m2=80,m5=40,占用空间[0,120),最大访问地址为120
- 执行t3,分配m3=40,占用空间[0,40),最大访问地址40
- 并发执行t4和t7,分配m4=40,m7=60,占用空间[0,100)
- 执行t6,分配m6=60,占用空间[0,60),最大访问地址60
- 执行t8,分配m8=60,占用空间[0,60),最大访问地址60
输出系统的需要的最小内存为120
样例2
输入
10
40 50 80 10 30 80 90 30 70 150
0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0
输入
190
通知
扫码备注华为交流群~期待您的到来
- 湘ICP备2023007293号
- Worker 0, 38ms
- Powered by Hydro v4.14.1 Community