傳送門:https://uva.onlinejudge.org/external/121/12100.pdf
題意:隊列中待列印的任務(1 <= n <= 100)帶有優先級(1-9), 列印步驟為每次從隊首拿出一個, 如果隊列中沒有優先級比該任務高的, 列印這個任務; 若有優先級高的, 把這個任務放到隊尾, 并列印優先級最高的. 每列印一次耗時1分鐘, 求給定任務什麼時候列印.
水題A半天 不愧是弱渣..........
最壞的情況需要maxn*maxn的空間........
front rear 記錄前後位置
1 #include <bits/stdc++.h>
2 using namespace std;
3
4 const int MAXN = 111;
5 int t, n, m, _time;
6 int que[MAXN*MAXN];
7
8 void process(){
9 int front = 0, rear = n;
10 while(true){
11 int maxi = que[front];
12 for(int i = front; i < rear; ++i){
13 if(que[i] > maxi){
14 if(front == m) m = rear;
15 que[rear++] = que[front++];
16 break;
17 }
18 else if(i == rear - 1){
19 ++_time;
20 if(front == m) return ;
21 front++;
22 }
23 }
24 }
25 }
26 int main(){
27 cin >> t;
28 while(t--){
29 _time = 0;
30 cin >> n >> m;
31 for(int i = 0; i < n; ++i) cin >> que[i];
32 process();
33 cout << _time << endl;
34 }
35 return 0;
36 }
轉載于:https://www.cnblogs.com/book-book/p/5335136.html