日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

HDU 1873 看病要排队(结构体+优先队列)

發(fā)布時(shí)間:2025/3/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 1873 看病要排队(结构体+优先队列) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目:
Problem Description
看病要排隊(duì)這個(gè)是地球人都知道的常識(shí)。
不過(guò)經(jīng)過(guò)細(xì)心的0068的觀察,他發(fā)現(xiàn)了醫(yī)院里排隊(duì)還是有講究的。0068所去的醫(yī)院有三個(gè)醫(yī)生(汗,這么少)同時(shí)看病。而看病的人病情有輕重,所以不能根據(jù)簡(jiǎn)單的先來(lái)先服務(wù)的原則。所以醫(yī)院對(duì)每種病情規(guī)定了10種不同的優(yōu)先級(jí)。級(jí)別為10的優(yōu)先權(quán)最高,級(jí)別為1的優(yōu)先權(quán)最低。醫(yī)生在看病時(shí),則會(huì)在他的隊(duì)伍里面選擇一個(gè)優(yōu)先權(quán)最高的人進(jìn)行診治。如果遇到兩個(gè)優(yōu)先權(quán)一樣的病人的話(huà),則選擇最早來(lái)排隊(duì)的病人。

現(xiàn)在就請(qǐng)你幫助醫(yī)院模擬這個(gè)看病過(guò)程。

Input
輸入數(shù)據(jù)包含多組測(cè)試,請(qǐng)?zhí)幚淼轿募Y(jié)束。
每組數(shù)據(jù)第一行有一個(gè)正整數(shù)N(0<N<2000)表示發(fā)生事件的數(shù)目。
接下來(lái)有N行分別表示發(fā)生的事件。
一共有兩種事件:
1:"IN A B",表示有一個(gè)擁有優(yōu)先級(jí)B的病人要求醫(yī)生A診治。(0<A<=3,0<B<=10)
2:"OUT A",表示醫(yī)生A進(jìn)行了一次診治,診治完畢后,病人出院。(0<A<=3)

Output
對(duì)于每個(gè)"OUT A"事件,請(qǐng)?jiān)谝恍欣锩孑敵霰辉\治人的編號(hào)ID。如果該事件時(shí)無(wú)病人需要診治,則輸出"EMPTY"。
診治人的編號(hào)ID的定義為:在一組測(cè)試中,"IN A B"事件發(fā)生第K次時(shí),進(jìn)來(lái)的病人ID即為K。從1開(kāi)始編號(hào)。

Sample Input

7
IN 1 1
IN 1 2
OUT 1
OUT 2
IN 2 1
OUT 2
OUT 1
2
IN 1 1
OUT 1

Sample Output

2
EMPTY
3
1
1

簡(jiǎn)單的結(jié)構(gòu)體優(yōu)先級(jí)設(shè)置,直接上代碼:

#include <iostream> #include <queue> #include <vector> using namespace std; struct node {int id;int ill;friend bool operator < (const node &a,const node &b){if(a.ill==b.ill) return a.id>b.id;return a.ill<b.ill;} }N[1000]; priority_queue<node> doctor1; priority_queue<node> doctor2; priority_queue<node> doctor3; int main() {int n,t,i,k;string st;while(cin>>n){k=1;for(i=0;i<n;i++){cin>>st;if(st=="IN"){ N[i].id=k++;cin>>t;cin>>N[i].ill;if(t==1) doctor1.push(N[i]);else if(t==2) doctor2.push(N[i]);else if(t==3) doctor3.push(N[i]);}else if(st=="OUT"){cin>>t;if(t==1){if(doctor1.empty()) cout<<"EMPTY"<<endl;else{cout<<doctor1.top().id<<endl;doctor1.pop();}}else if(t==2){if(doctor2.empty()) cout<<"EMPTY"<<endl;else{cout<<doctor2.top().id<<endl;doctor2.pop();}}else if(t==3){if(doctor3.empty()) cout<<"EMPTY"<<endl;else{cout<<doctor3.top().id<<endl;doctor3.pop();}}}}while(!doctor1.empty()) doctor1.pop();while(!doctor2.empty()) doctor2.pop();while(!doctor3.empty()) doctor3.pop();}return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的HDU 1873 看病要排队(结构体+优先队列)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。