b pat 銀行排隊(全部轉化為秒 排序 堆)

2022-02-24 15:12:54 字數 1980 閱讀 4091

假設一家銀行有 k 個服務視窗。窗戶前面有一條黃線,將等候區分為兩部分。

所有客戶都必須在黃線後面排隊等候,直到輪到他/她服務並且有可用的視窗為止。

假定乙個視窗不能被單個客戶占用超過 1 小時,即如果某位顧客的業務已經辦理了一小時,則立即終止此項業務。

現在給定每個客戶的到達時間 t 和業務辦理時間 p,請計算所有客戶的平均等待時間。

輸入格式

第一行包含兩個整數 n 和 k,分別表示客戶數量以及視窗數量。

接下來 n 行,每行包含兩個時間,分別是乙個客戶的到達時間,用 hh:mm:ss 表示,以及乙個客戶的業務辦理時間 p(單位:分鐘)。

hh 在 [00,23] 範圍內,mm 和 ss 都在 [00,59] 範圍內。

請注意,銀行的營業時間為 08:00 至 17:00。

任何人提前到達都必須排隊等候至 08:00,而任何人來得太晚(在 17:00:01 或之後到達)都將不被服務也無需計入平均值。

注意只要客戶在17:00之前排上隊,則即使辦理業務時超過17:00,也會被服務。

輸出格式

輸出平均等待時間(單位:分鐘),結果保留一位小數。

注意,從到達銀行至開始辦理業務這一期間視為等待期間。

資料範圍

1≤n≤104,

1≤k≤100

思路

這裡的輸入時間有時分秒不太好比較,可以全部轉化為秒(防止產生小數)

一開始有k個空視窗,每次有客戶來的時候,優先安排到先結束辦理的視窗內為候選客人服務

#includeusing namespace std;

const int n=1e4+5, s=8*3600, e=17*3600;

struct nodea[n];

bool cmp(node &a, node &b)

printf("%.1f\n", (double) tot/cnt/60.0);

return 0;

}

在黃線以內的區域,每個視窗前都可以排一隊人,每隊最多可以排 m 個人,當 n 個視窗前的隊伍都排滿時,第 nm+1 個顧客以及以後的顧客只能在黃線以外的區域等候。黃線外的所有客戶統一排成乙個長隊。

每當客戶進入黃線以內時,他會選擇到當前排隊人數最少的視窗處排隊等待辦理業務。當多個視窗前排隊人數最少時,客戶會選擇視窗編號更小的視窗處排隊等待辦理業務。

思路

按照條件找視窗,用use記錄每個視窗的總等待時間,id為x的使用者如果去了c視窗,則它的完成時間為use[c]+t(t為自己的處理時間)

這題服了,m好像沒有真正被用到,只是再算全域性限制人數的時候用了一下;其他

#includeusing namespace std;

const int n=25;

queuewin[n];

unordered_mapmp;

int main()

for (int i=0; i>x;

if (mp.count(x)) else

}return 0;

}

一開始有n個耗子組成了n/m隊(m為每隊的數量),每次每隊最重的勝出,遊戲持續到只剩下乙隻耗子,問最後的排名;

#includeusing namespace std;

struct node ;

bool cmp(node& a, node& b)

q.push(maxq.top()); maxq.pop(); //將每一組最肥的老鼠重新進堆(晉級)

while (!maxq.empty()) }}

a[q.front().init_pos].rk=1;

sort(a, a+n, cmp1);

for (int i=0; ireturn 0;

}

php轉化為秒,php將秒轉換為小時 分鐘 秒

我需要將秒轉換為 小時 分鐘 秒 例如 685 轉換為 00 11 25 我怎樣才能做到這一點?第一種方法 你可以使用這個gmdate 功能 echo gmdate h i s 685 第二種方法 format time function format time t,f t seconds,f se...

使用python實現將秒轉化為天時分

在計算時間差的時候,比較容易得到timedelta這樣的格式 比如 import datetime datetime.datetime.now datetime.datetime 2021,1,1 datetime.timedelta days 150,seconds 40790,microseco...

php 時分秒轉為秒,秒轉化為天時分秒

一 分秒轉為秒 獲取時分秒,轉化成秒 8小時5分5秒 function turnsecond str elseelse num hour 3600 minute 60 second return num 二 秒轉化為天時分秒 轉化時間為 天時分秒 function timesecond second...