UVa12100
来源:互联网 发布:淘宝免费店招图片 编辑:程序博客网 时间:2024/06/05 10:24
题意:给出n个有优先级的job,9表示优先级最高,1表示优先级最低,如果队列中有比队首优先级更高的job,将队首的job移到队尾,否则移出队首job打印
思路:用优先级队列来排序,将优先级最高的job放到 队首,用普通队列来存取job的顺序。
代码 如下:
#include <iostream>#include <fstream>#include <queue>class Solution{public: void init(int n, int m) { this-> n = n; this->m = m; } void setA(int i, int n) { a[i] = n; } int solve() { std::queue<Node> queue; std::priority_queue<int> pq; for (int i = 0; i < n; i++) { Node node; node.pos = i; node.num = a[i]; queue.push(node); pq.push(a[i]); } int time = 0; while (!queue.empty()) { Node node = queue.front(); if (node.num >= pq.top()) { time++; pq.pop(); queue.pop(); if (node.pos == m) break; } else { queue.pop(); queue.push(node); } } return time; }private: class Node { public: int pos; int num; bool operator < (Node& b) const { return num < b.num; } };private: static const int N = 101; int a[N]; int n, m;};int main() {#ifndef ONLINE_JUDGE std::ifstream fin("f:\\oj\\uva_in.txt"); std::streambuf* old = std::cin.rdbuf(fin.rdbuf());#endif int t; Solution solver; std::cin >> t; for (int i = 1; i <= t; i++) { int n, m; std::cin >> n >> m; solver.init(n, m); for (int i = 0; i < n; i++) { int a; std::cin >> a; solver.setA(i, a); } int ans = solver.solve(); std::cout << ans << std::endl; }#ifndef ONLINE_JUDGE std::cin.rdbuf(old);#endif return 0;
阅读全文
0 0
- UVa12100
- UVa12100
- UVa12100 - Printer Queue
- UVA12100 - Printer Queue
- UVA12100-打印队列
- UVa12100 Printer Queue
- UVA12100 Printer Queue
- uva12100解题报告
- UVa12100 Printer Queue (打印队列)
- UVA12100:Printer Queue(打印队列)
- 习题5-7 打印队列 UVa12100
- UVA12100 Printer Queue 【双端队列】
- uva12100 Printer Queue (队列模拟, 据说是优先队列,错了)
- Uva12100 Printer Queue 【queue+sort】【习题5-7】
- UVALive3638 UVA12100 POJ3125 HDU1972 Printer Queue【队列+模拟】
- 习题5-7 打印队列(Printer Queue, UVa12100)
- 有关优先对列的题——UVA12100 - Printer Queue
- [刷题]算法竞赛入门经典(第2版) 5-7/UVa12100 - Printer Queue
- 初入python思维导图
- HDU 1401 Solitaire [双向BFS]
- 2017 Multi-University Training Contest 10 1008 Monkeys&& HDU 6178 (贪心+超级读入挂fread)
- Session会话与cookie
- 数组单调和
- UVa12100
- C++朗读中文文本
- c++11多线程-problem1
- 跨域问题及其前后端解决办法
- 没有内购,却被拒
- UVA-140 最小带宽 以后再补吧
- BZOJ3218: A + B Problem
- HDU 6181 次短路
- Java GC 垃圾回收器的类型小结