離散事件模擬 銀行管理 佇列

2021-06-26 23:33:44 字數 1268 閱讀 6483

time limit: 1000ms memory limit: 65536k

現在銀行已經很普遍,每個人總會去銀行辦理業務,乙個好的銀行是要考慮 平均逗留時間的,即: 在一定時間段內所有辦理業務的人員逗留的時間的和/ 總的人數。逗留時間定義為 人員離開的時間減去人員來的時間。銀行只有考慮了這一點,我們在辦理業務的時候,才不會等太多的時間。

為了簡化問題,我們認為銀行只有一號視窗和二號視窗可以辦理業務 ,並且在時間範圍是12<=time<=18,即從中午十二點到晚上十八點,輸入資料採用分鐘即0代表中午12點,60代表下午一點,90代表下午一點半… 這樣time>=0&&time<=360, 如果超出這個時間段概不接受,在這個時間段的一律接受。每個人到達的時間都不一樣。顧客到達的時候,總是前往人數少的那個視窗。如果辦業務的兩個人進入離去發生在同一時間,則遵從先離去後進入。如果人數相當或者兩個視窗都沒有人總是前往1號視窗。請計算平均逗留時間=總逗留的分鐘數/總的人數。

第一行乙個整數t(0對於每一組輸入乙個整數n(00&&y<=15)。資料保證按顧客來的先後順序輸入。

對於每組資料輸出平均逗留時間,保留兩位小數。

1

160 10

10.00

gyx#include #include #include #include #include #include using namespace std;

int main()

{ int t,n;

int in,wait;//進入和逗留的時間;

int l1,l2;//標記1,2隊伍中最後乙個離開的時間;

double sum;//記錄總時間;

scanf("%d",&t);

while(t--)

{scanf("%d",&n);

int a=n;//儲存一下n的值 因為後面還要去平均時間;

l1=l2=0;

sum=0;

queueq1,q2;

while(n--)

{scanf("%d %d",&in,&wait);

while(!q1.empty()&&q1.front()<=in)//判斷原佇列是否有人離開,如果當前人的進入時間大於前乙個人的離開時間證明前乙個人要離開;

q1.pop();

while(!q2.empty()&&q2.front()<=in)//同上;

q2.pop();

if(q1.size()<=q2.size())//如果隊伍1的長度比隊伍2的短,進入隊伍1;

{if(in

離散事件模擬 銀行管理(佇列)

離散事件模擬 銀行管理 time limit 1000 ms memory limit 65536 kib submit statistic problem description 現在銀行已經很普遍,每個人總會去銀行辦理業務,乙個好的銀行是要考慮 平均逗留時間的,即 在一定時間段內所有辦理業務的人...

離散事件模擬 銀行管理

離散事件模擬 銀行管理 timelimit 1000ms memory limit 65536k 題目描述 現在銀行已經很普遍,每個人總會去銀行辦理業務,乙個好的銀行是要考慮平均逗留時間的,即 在一定時間段內所有辦理業務的人員逗留的時間的和 總的人數。逗留時間定義為人員離開的時間減去人員來的時間。銀...

離散事件模擬 銀行管理

time limit 1000ms memory limit 65536k 有疑問?點這裡 現在銀行已經很普遍,每個人總會去銀行辦理業務,乙個好的銀行是要考慮 平均逗留時間的,即 在一定時間段內所有辦理業務的人員逗留的時間的和 總的人數。逗留時間定義為 人員離開的時間減去人員來的時間。銀行只有考慮了...