問題 D 看病要排隊

2021-10-04 06:58:25 字數 1318 閱讀 8543

題目描述

看病要排隊這個是地球人都知道的常識。

不過經過細心的0068的觀察,他發現了醫院裡排隊還是有講究的。0068所去的醫院有三個醫生(汗,這麼少)同時看病。而看病的人病情有輕重,所以不能根據簡單的先來先服務的原則。所以醫院對每種病情規定了10種不同的優先順序。級別為10的優先權最高,級別為1的優先權最低。醫生在看病時,則會在他的隊伍裡面選擇乙個優先權最高的人進行診治。如果遇到兩個優先權一樣的病人的話,則選擇最早來排隊的病人。

現在就請你幫助醫院模擬這個看病過程。

輸入

輸入資料報含多組測試,請處理到檔案結束。

每組資料第一行有乙個正整數n(0知識點:優先佇列

說一下這題有個坑點是我網上查過的,需要穩定排序,意思是優先權相同的不變動。

思路:因為這裡有個優先權,所有優先佇列很好用,用結構體儲存每個病人的編號(id),要看幾號醫生(doc),還有優先權§,然後模擬流程,獲取到字串是in的話輸入 醫生和優先權,然後給個編號,因為這裡有3個醫生,所以我用了3個佇列,不是in就輸出,輸出首先判斷佇列是不是空的,空的輸出empty,不空輸出編號。

**:

#include

#include

#include

#include

#include

using

namespace std;

struct nodenode[

10010];

struct cmp};

priority_queue

,cmp> q,q1,q2;

intmain()

while

(!q1.

empty()

)while

(!q2.

empty()

)int cnt =1;

for(

int i =

0; i < n; i++

)else

node node1 = q.

top();

cout

pop();

}else

if(num==2)

node node1 = q1.

top();

cout

pop();

}else

if(num==3)

node node1 = q2.

top();

cout

pop();

}}}}

return0;

}

D 看病要排隊

看病要排隊這個是地球人都知道的常識。不過經過細心的0068的觀察,他發現了醫院裡排隊還是有講究的。0068所去的醫院有三個醫生 汗,這麼少 同時看病。而看病的人病情有輕重,所以不能根據簡單的先來先服務的原則。所以醫院對每種病情規定了10種不同的優先順序。級別為10的優先權最高,級別為1的優先權最低。...

D 看病要排隊

看病要排隊這個是地球人都知道的常識。不過經過細心的0068的觀察,他發現了醫院裡排隊還是有講究的。0068所去的醫院有三個醫生 汗,這麼少 同時看病。而看病的人病情有輕重,所以不能根據簡單的先來先服務的原則。所以醫院對每種病情規定了10種不同的優先順序。級別為10的優先權最高,級別為1的優先權最低。...

D 看病要排隊

d 看病要排隊 看病要排隊這個是地球人都知道的常識。不過經過細心的0068的觀察,他發現了醫院裡排隊還是有講究的。0068所去的醫院有三個醫生 汗,這麼少 同時看病。而看病的人病情有輕重,所以不能根據簡單的先來先服務的原則。所以醫院對每種病情規定了10種不同的優先順序。級別為10的優先權最高,級別為...