題目內容
給出n把鑰匙掛在掛架上,編號從左到右為1~n。然後給出k個老師的鑰匙使用資訊w, s, c,分別表示一位老師要使用的鑰匙編號、開始上課的時間和上課的時長。還鑰匙時每次都先放在掛架最左邊的空位。借鑰匙時就直接取下鑰匙。如果同時有老師借和還,就先按鑰匙編號從小到大還完後再借鑰匙。老師使用鑰匙的時間不會重疊。
樣例輸入
524
3322
7
樣例輸出
143
25
樣例輸入
571
11433
121151227
2031812421
195309
樣例輸出
123
54
思路
在輸入資料時就建立時間軸,可以使用stl的set來建立,set自動從小到大排序;然後根據建立好的時間軸裡,每個時間點都有動作發生,要麼借,要麼還。所以使用兩個二維陣列,borrow和restore陣列,一維成員就是時間軸的點,二維成員就是要進行操作的鑰匙。
注意,restore陣列裡面的鑰匙要按編號從小到大排序。borrow就不用。
再使用乙個map來記錄每把鑰匙的當前位置,供後續操作使用。然後再開始時建立乙個掛架陣列hanger來模擬當前掛架情況。
執行時以時間軸進行迴圈,迴圈結束後輸出當前掛架hanger的鑰匙情況即可。
c++**
#include
#include
#include
#include
using
namespace std;
intmain()
for(
int i =
0; i < numberofteacher; i++
)for
(auto it = time.
begin()
; it != time.
end(
); it++)}
if(borrow[
*it]
.size()
!=0)// borrow key
for(
int i =
0; i < borrow[
*it]
.size()
; i++
) emptypos.
insert
(key[borrow[
*it]
[i]]);
}for
(int i =
1; i <= numberofkey; i++
)return0;
}
CCF 201709 2 公共鑰匙盒
試題編號 201709 2 試題名稱 公共鑰匙盒 問題描述 有乙個學校的老師共用n個教室,按照規定,所有的鑰匙都必須放在公共鑰匙盒裡,老師不能帶鑰匙回家。每次老師上課前,都從公共鑰匙盒裡找到自己上課的教室的鑰匙去開門,上完課後,再將鑰匙放回到鑰匙盒中。鑰匙盒一共有n個掛鉤,從左到右排成一排,用來掛n...
CCF 201709 2 公共鑰匙盒
問題描述 試題編號 201709 2 試題名稱 公共鑰匙盒 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 有乙個學校的老師共用n個教室,按照規定,所有的鑰匙都必須放在公共鑰匙盒裡,老師不能帶鑰匙回家。每次老師上課前,都從公共鑰匙盒裡找到自己上課的教室的鑰匙去開門,上完課後,再將...
CCF 201709 2 公共鑰匙盒
試題編號 201709 2 試題名稱 公共鑰匙盒 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 有乙個學校的老師共用n個教室,按照規定,所有的鑰匙都必須放在公共鑰匙盒裡,老師不能帶鑰匙回家。每次老師上課前,都從公共鑰匙盒裡找到自己上課的教室的鑰匙去開門,上完課後,再將鑰匙放回到...