7-4 銀行排隊問題之單視窗「夾塞」版(30 分)
排隊「夾塞」是引起大家強烈不滿的行為,但是這種現象時常存在。在銀行的單視窗排隊問題中,假設銀行只有1個視窗提供服務,所有顧客按到達時間排成一條長龍。當視窗空閒時,下一位顧客即去該視窗處理事務。此時如果已知第
i位顧客與排在後面的第
j位顧客是好朋友,並且願意替朋友辦理事務的話,那麼第
i位顧客的事務處理時間就是自己的事務加朋友的事務所耗時間的總和。在這種情況下,顧客的等待時間就可能被影響。假設所有人到達銀行時,若沒有空視窗,都會請求排在最前面的朋友幫忙(包括正在視窗接受服務的朋友);當有不止一位朋友請求某位顧客幫忙時,該顧客會根據自己朋友請求的順序來依次處理事務。試編寫程式模擬這種現象,並計算顧客的平均等待時間。
輸入的第一行是兩個整數:1≤
n≤10
000,為顧客總數;0≤
m≤10
0,為彼此不相交的朋友圈子個數。若
m非0,則此後
m行,每行先給出正整數2≤
l≤10
0,代表該圈子裡朋友的總數,隨後給出該朋友圈裡的
l位朋友的名字。名字由3個大寫英文本母組成,名字間用1個空格分隔。最後
n行給出
n位顧客的姓名、到達時間
t和事務處理時間
p(以分鐘為單位),之間用1個空格分隔。簡單起見,這裡假設顧客資訊是按照到達時間先後順序給出的(有並列時間的按照給出順序排隊),並且假設每個事務最多占用視窗服務60分鐘(如果超過則按60分鐘計算)。
按顧客接受服務的順序輸出顧客名字,每個名字佔1行。最後一行輸出所有顧客的平均等待時間,保留到小數點後1位。
6 2
3 ann bob joe
2 jim zoe
jim 0 20
bob 0 15
ann 0 30
amy 0 2
zoe 1 61
joe 3 10
jim
zoebob
annjoe
amy75.2
這個題目實質就是乙個簡單的模擬,我們首先需要考慮一下我們應該怎麼儲存朋友之間的關係,然後通過姓名迅速判斷是否是朋友,我們這裡就是用的map來一一對應,後面將每個人放到佇列中,我們每次都從佇列的開頭去除乙個元素,然後往後判斷,如果在他辦理業務的時間之中,會有他的朋友來到銀行,那麼我們就把這個朋友標記一下,後面再從佇列取出這個人時,他已經是辦理過的了,所以就不考慮了,然後這個插隊的人的等待時間就是正在辦理業務的朋友手中需要辦理的業務時間減去他來的時間。那麼這裡的last就是從開始辦理業務到現在所持續的時間,先要計算等待的時間就等於持續的時間減去這個人到達的時間。如果視窗出現了空閒的時間,那麼我們這裡的last就需要重新計數了,因為我們不能加上中間這段空閒的時間,所以這個last就被重新定義為空閒之後的第乙個人辦理完業務的時間。
(答案僅供參考)
#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f
using namespace std;
const int maxn = 10100;
struct peo
peo[maxn];
int n,m;
vectorfir[110];
mapgroup;
char name[5];
queueque;//表示排的隊伍
int main()
}for(int i =0 ; i < n; i ++)
//首先是第乙個到達的進隊
int last = 0;//表示業務持續的時間
int ans = 0;
bool flag[maxn] = ;//表示是否在隊伍中
while(!que.empty())
else//如果是前面沒有人的話,那麼這裡持續的時間就應該從這個人開始重新計算。
printf("%s\n",temp.name);
for(int i =temp.pos+1 ; i < n; i ++) //}}
}printf("%.1f",1.0*ans/n);
}
7 48 銀行排隊問題之單視窗「夾塞」版
排隊 夾塞 是引起大家強烈不滿的行為,但是這種現象時常存在。在銀行的單視窗排隊問題中,假設銀行只有1個視窗提供服務,所有顧客按到達時間排成一條長龍。當視窗空閒時,下一位顧客即去該視窗處理事務。此時如果已知第i位顧客與排在後面的第j位顧客是好朋友,並且願意替朋友辦理事務的話,那麼第i位顧客的事務處理時...
資料結構 銀行排隊問題之單視窗「夾塞」版
題目大意 排隊 夾塞 是引起大家強烈不滿的行為,但是這種現象時常存在。在銀行的單視窗排隊問題中,假設銀行只有1個視窗提供服務,所有顧客按到達時間排成一條長龍。當視窗空閒時,下一位顧客即去該視窗處理事務。此時如果已知第i位顧客與排在後面的第j位顧客是好朋友,並且願意替朋友辦理事務的話,那麼第i位顧客的...
7 2 銀行排隊問題之單視窗「夾塞」版 30分
排隊 夾塞 是引起大家強烈不滿的行為,但是這種現象時常存在。在銀行的單視窗排隊問題中,假設銀行只有1個視窗提供服務,所有顧客按到達時間排成一條長龍。當視窗空閒時,下一位顧客即去該視窗處理事務。此時如果已知第i位顧客與排在後面的第j位顧客是好朋友,並且願意替朋友辦理事務的話,那麼第i位顧客的事務處理時...