Responsive image

问题 2883 --计算机操作系统,银行家算法避免死锁

2883: 计算机操作系统,银行家算法避免死锁

时间限制: 1 Sec  内存限制: 128 MB
提交: 0  解决: 0
[提交][状态][讨论版][命题人:]

题目描述

本题是将操作系统课本上的银行家算法进行的题目化改编
银行家算法描述先咕咕

输入描述

所有数都是整数,所有数的范围1~1000
第一行3个整数n m P 代表资源种类数 询问数 进程数  
第二行n个整数 A0,A1,A2,A3...A(n-1),代表n种资源的各自数量(下标从0开始 )
接下来 P行,每行n个数,代表每个进程对应资源的最大需求值 
再接下来P行,每行n个数,代表对应资源已分配数
再接下来m行询问,每行询问包含n+1个再接下来m组询问,每组询问包含两行
第一个行代表申请资源的进程编号
第二行n个整数代表想要申请的对应资源数量
不保证要申请的数量+已分配数量<=资源最大需求值 

输出描述

对于每个询问
如果不会导致死锁第一行输出 YES
第二行按照分配资源安全队列执行顺序输出n个数 
如果会导致死锁或
请求的资源超过系统可用资源或
请求的资源超过进程资源最大值,只输出 NO 占一行

样例输入

3 2 5
10 5 7
7 5 3
3 2 2
9 0 2
2 2 2
4 3 3
0 1 0
2 0 0
3 0 2
2 1 1
0 0 2
1
1 0 2
4
3 3 0

样例输出

YES
1 3 4 2 0
NO 

提示


对于每次询问,如果不会造成死锁则会将资源真正分配给该进程,


即每一次询问会影响后续询问 





现在只是将课本的算法改编,抄了下来,还没验证数据合理性

如有不合理地方欢迎联系我改正

来源

[提交][状态]
ACM算法攻关部