bzoj#P2203. Pku2448 A New Operating System
Pku2448 A New Operating System
题目描述
最近阳阳接下了一个任务:编写一个操作系统。 编写操作系统可是一个大工程,阳阳花费了很多时间在上面,他本想很快完成的,但是IOI在即,再怎么样也不能耽误了世界赛啊!但是雇主的要求有很严格,要求阳阳一定要在IOI之前完成这个系统的编写,所以他不得不找到你请求帮助,人多力量大嘛,你就帮帮他咯。 你的任务很简单,只要编写一个内存管理系统就可以了。你的程序需要支持以下9个操作: CreateProcess(PID,Memory,Priority):新建一个过程,编号为PID,其占用的内存为Memory,优先级(称为外部优先级)为Priority; AddMessage(PID,Priority):在过程PID中新建一个任务,其优先级(称为内部优先级)为Priority; Run:在当前所有任务中间找出一个优先级最高的运行并输出’Run: Priority’,这里的优先级定义为其内部优先级与外部优先级的积,如果两个任务的优先级一样则优先运行PID较小的任务,如果没有任何任务则输出’Empty’; ChangePriority(PID,NewValue):将过程PID的外部优先级改变为NewValue; GetMemory(PID,Memory):将过程PID的内存占用增加Memory; FreeMemory(PID,Memory):将过程PID的内存占用减少Memory; RunProcess(PID):将过程PID中找出一个内部优先级最高的运行并输出’Run Process: Priority’,如果该过程中如果没有任何任务则输出’Empty’; CloseMaxMemory:将当前所有过程中内存占用最高的过程关闭,占用内存一样则选择PID较小的关闭,如果当前没有任何过程则输出’Empty’; CloseProcess(PID):将过程PID关闭。 PS: 1) 任务运行后自动被删除; 2) 对于CreateProcess,如果PID已经存在则输出’Error’,对于其他操作,如果PID不存在则输出’Error’,这种情况下该操作将被忽略; 3) 当一个过程的内存占用小于等于0时则该过程将被自动关闭;
输入格式
第一行一个正整数N,表示操作总数,开始内存中过程为空; 然后N行每行按照如上格式描述一个任务;
输出格式
按照如上描述输出。
CloseMaxMemory
CreateProcess(1,100,1)
CreateProcess(2,200,1)
CreateProcess(3,300,1)
AddMessage(1,9)
AddMessage(2,19)
AddMessage(1,10)
GetMemory(2,999)
CloseMaxMemory
Run
RunProcess(1)
Run: 10
Run Process: 9
提示
0 < N <= 100,000 对于 65% 的数据范围 N <= 1,000 ; 对于 90% 的数据范围将只出现 CreateProcess 、 AddMessage 、 Run 、 RunProcess 操作; 对于 90% 的数据 PID 的范围为 [1 .. N] ;
题目来源
模拟题系列