一開始想的用heap維護一下,但是發現輸出不好搞,而且維護兩個值的heap好像不怎麼會做,然後學習了一發優先佇列,挺好用的,直接模擬就好了,用優先佇列維護一下優先順序和到達時間就好了。
#include
#include
#include
#include
#include
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
using
namespace
std;
struct node
};priority_queueq;
int t,a,b,c,d;
inline
void add(int a,int b,int c,int d)
int main()
x=q.top();
q.pop();
v=x.tex;
}add(a,b,c,d);
if (flag)continue;
x.tex-=(b-t);
q.push(x);
t+=(b-t);
}while (!q.empty())
return
0;}
BZOJ 1216 HNOI2003 作業系統
time limit 10 sec memory limit 162 mb submit 886 solved 492 submit status discuss 寫乙個程式來模擬作業系統的程序排程。假設該系統只有乙個cpu,每乙個程序的到達時間,執行時間和執行優先順序都是已知的。其中執行優先順序用...
bzoj1216 HNOI2003 作業系統
time limit 10 sec memory limit 162 mb submit 751 solved 419 submit status discuss 寫乙個程式來模擬作業系統的程序排程。假設該系統只有乙個cpu,每乙個程序的到達時間,執行時間和執行優先順序都是已知的。其中執行優先順序用...
BZOJ1216 HNOI2003 作業系統
我對模擬的理解 題目傳送門 不茲磁多執行緒的系統不是好系統 對於每個程序,我們都記錄下關於它的五個引數 程序號,起始時間,持續時間,終結時間以及優先順序。按照題意,優先順序越大越應優先執行,同優先順序的比起始時間,用堆來維護已經進來排隊的程序,然後按題意模擬即可。因為學長說想要 noi 金牌,堆肯定...