zoukankan      html  css  js  c++  java
  • SOJ 1443. Printer Queue

    题目大意:输入整数t,代表测试样例的数量。每个测试样例首先输入整数n和整数m,分别代表队列中作业的数目和目标作业当前位置。然后下一行输入n个大小为1-9的整数,分别代表n个作业的优先级。每次检查队列头部,若队列头部作业的优先级是队列中的最大值,则抛出作业;否则将该作业放入队尾重新排队。要求输出目标作业是第几次被抛出的。

    解题思路:构建结构体,包含作业的id(用作业开始的位置作为id)和作业的优先级。模拟抛出作业的过程。利用优先队列保存队列的优先级,能够更高效的判断队列优先级的最大值。

    代码如下:

     1 #include <iostream>
     2 #include <queue>
     3 using namespace std;
     4 
     5 struct Elem {
     6     int pos;
     7     int priority;
     8     Elem(int pos_ = 0, int priority_ = 1) {
     9         pos = pos_;
    10         priority = priority_;
    11     }
    12 };
    13 
    14 int main() {
    15     int t;
    16     cin >> t;
    17     while (t--) {
    18         int n, m;
    19         int temp;
    20         queue<Elem> elems;
    21         priority_queue<int> pq;
    22         cin >> n >> m;
    23         for (int i = 0; i < n; i++) {
    24             cin >> temp;
    25             elems.push(Elem(i, temp));
    26             pq.push(temp);
    27         }
    28 
    29         int step = 0;
    30         while (true) {
    31             step++;
    32             int next_priority = pq.top();
    33             pq.pop();
    34             // cout << next_priority << endl;
    35 
    36             while (elems.front().priority != next_priority) {
    37                 elems.push(elems.front());
    38                 elems.pop();
    39             }
    40 
    41             if (elems.front().pos == m) {
    42                 break;
    43             } else {
    44                 elems.pop();
    45             }
    46         }
    47 
    48         cout << step << endl;
    49 
    50     }
    51 
    52     return 0;
    53 }
  • 相关阅读:
    NET在后置代码中输入JS提示语句(背景不会变白)
    陈广老师C#参考视频 方法的参数传递 总结
    preventDefault和stopPropagation两个方法的区别
    zerobased budgeting: 零基预算法
    JS: 关于自执行的匿名函数(整理)
    通过实例理解javascript 的call()与apply()
    setTimeout注意几点
    js constructor
    canphp的数据库操作
    JS事件监听器
  • 原文地址:https://www.cnblogs.com/mchcylh/p/4869929.html
Copyright © 2011-2022 走看看