標籤:style http color os io for ar amp 時間
題目連結:uva 1203 - Argus
題目大意:一個成為Argus的系統,支援一個Register命令
Register Q_num Period
該命令為一個祖冊出發器,每Period產生一次Q_num的時間。要求類比k個事件,如果多個事件同時發生,現處理Q_num小的。
解題思路:用優先隊列維護即可,隊列中按照時間小的優先,時間相同的比較Q_num,每次處理完一個時間,對應的將時間的時間加上period後放回隊列中,表示下一次出發器產生的時間。
#include <cstdio>#include <cstring>#include <queue>#include <algorithm>using namespace std;struct item { int num, period, ti; bool operator < (const item& a) const { return ti > a.ti || (ti == a.ti && num > a.num); }};int main () { priority_queue<item> pri_que; char str[105]; while (scanf("%s", str) == 1 && str[0] != ‘#‘) { item u; scanf("%d%d", &u.num, &u.period); u.ti = u.period;; pri_que.push(u); } int Q; scanf("%d", &Q); for (int i = 0; i < Q; i++) { item u = pri_que.top(); pri_que.pop(); printf("%d\n", u.num); u.ti += u.period; pri_que.push(u); } return 0;}
uva 1203 - Argus(優先隊列)