首页 > 代码库 > poj 2051 Argus(优先队列)
poj 2051 Argus(优先队列)
题目链接: http://poj.org/problem?id=2051
思路分析:
优先级问题,使用优先队列求解;当执行某个任务后,再增加一个任务到队列中,
该任务的优先级为执行任务的时间加上其时间间隔,如此反复直到求出前K个执行任务。
代码:
#include <iostream>#include <queue>using namespace std;struct Argu{ int QNum; int period; int time; bool operator<(const Argu &rhs) const { if (time > rhs.time) return true; if (time == rhs.time) return QNum > rhs.QNum; return false; }};int main(){ int k; char tmp[10]; priority_queue<Argu> heap; while (scanf("%s", tmp) != EOF && strcmp(tmp, "#") != 0) { Argu command; scanf("%d%d", &command.QNum, &command.period); command.time = command.period; heap.push(command); } scanf("%d", &k); for (int i = 0; i < k; ++i) { Argu ans; ans = heap.top(); heap.pop(); ans.time += ans.period; heap.push(ans); printf("%d\n", ans.QNum); } return 0;}
poj 2051 Argus(优先队列)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。