首页 > 代码库 > UVA 1203 - Argus(优先队列)
UVA 1203 - Argus(优先队列)
UVA 1203 - Argus
题目链接
题意:给定一些注冊命令。表示每隔时间t,运行一次编号num的指令。注冊命令结束后。给定k。输出前k个运行顺序
思路:用优先队列去搞,任务时间作为优先级。每次一个任务出队后,在把它下次运行作为一个新任务入队就可以
代码:
#include <cstdio> #include <cstring> #include <queue> using namespace std; char str[10]; struct Task { int t, q, p; Task(){} Task(int t, int q, int p) { this->t = t; this->q = q; this->p = p; } bool operator < (const Task& a) const { if (t != a.t) return t > a.t; return q > a.q; } }; priority_queue<Task> Q; int main() { int a, b; while (~scanf("%s", str) && str[0] != ‘#‘) { scanf("%d%d", &a, &b); Q.push(Task(b, a, b)); } int k; scanf("%d", &k); while (k--) { Task now = Q.top(); Q.pop(); printf("%d\n", now.q); now.t += now.p; Q.push(now); } return 0; }
UVA 1203 - Argus(优先队列)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。