• UVa 12100 (模拟) Printer Queue


    用一个队列模拟,还有一个数组cnt记录9个优先级的任务的数量,每次找到当前最大优先级的任务然后出队,并及时更新cnt数组。

     1 #include <iostream>
     2 #include <cstring>
     3 #include <algorithm>
     4 #include <cstdio>
     5 #include <queue>
     6 using namespace std;
     7 
     8 struct Task
     9 {
    10     int pos, pri;
    11     Task(int pos = 0, int pri = 0):pos(pos), pri(pri) {}
    12 };
    13 
    14 int cnt[10];
    15 
    16 int main()
    17 {
    18     //freopen("in.txt", "r", stdin);
    19 
    20     int T; scanf("%d", &T);
    21     while(T--)
    22     {
    23         int n, p;
    24         scanf("%d%d", &n, &p);
    25         memset(cnt, 0, sizeof(cnt));
    26         queue<Task> Q;
    27         for(int i = 0; i < n; i++)
    28         {
    29             int pri;
    30             scanf("%d", &pri);
    31             Q.push(Task(i, pri));
    32             cnt[pri]++;
    33         }
    34         while(1)
    35         {
    36             Task t = Q.front();
    37             int m;
    38             for(m = 9; m >= t.pri; m--) if(cnt[m]) break;
    39             cnt[m]--;
    40             if(m > t.pri)
    41             {
    42                 while(t.pri != m)
    43                 {
    44                     Q.pop();
    45                     Q.push(t);
    46                     t = Q.front();
    47                 }
    48                 Q.pop();
    49                 if(t.pos == p) break;
    50                 //printf("sz = %d
    ", Q.size());
    51             }
    52             else
    53             {
    54                 Q.pop();
    55                 if(t.pos == p) break;
    56             }
    57         }
    58         printf("%d
    ", n - Q.size());
    59     }
    60 
    61     return 0;
    62 }
    代码君
  • 相关阅读:
    103. 二叉树的锯齿形层次遍历
    102. 二叉树的层次遍历
    94. 二叉树的中序遍历
    Redis和数据库 数据同步问题
    203. 移除链表元素
    19. 删除链表的倒数第N个节点
    237. 删除链表中的节点
    141. 环形链表
    2. 两数相加
    143. 重排链表
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4455386.html
Copyright © 2020-2023  润新知