本文主要是介绍UVALive - 3135 Argus,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:有一系列的事件,它每Period秒钟就会产生编号为qNum的事件,你的任务是模拟出前k个事件,如果多个事件同时发生,先处理qNum小的事件
思路:用优先队列模拟
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;struct item{int qNum,Per,Time;bool operator <(const item &a) const{return Time > a.Time || (Time == a.Time && qNum > a.qNum);}
};int main(){priority_queue<item> pq;char a[20];while (scanf("%s",a) != EOF && a[0] != '#'){item it;scanf("%d%d",&it.qNum,&it.Per);it.Time = it.Per;pq.push(it);}int K;scanf("%d",&K);while (K--){item r = pq.top();pq.pop();printf("%d\n",r.qNum);r.Time += r.Per;pq.push(r);}return 0;
}
这篇关于UVALive - 3135 Argus的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!