CCF 201709 2 公共鑰匙盒 100分

2021-09-12 09:18:00 字數 1497 閱讀 8505

題目內容

給出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個教室,按照規定,所有的鑰匙都必須放在公共鑰匙盒裡,老師不能帶鑰匙回家。每次老師上課前,都從公共鑰匙盒裡找到自己上課的教室的鑰匙去開門,上完課後,再將鑰匙放回到...