ccf170902 公共鑰匙盒

2022-05-21 16:12:09 字數 2403 閱讀 3431

題目

問題描述

有乙個學校的老師共用n個教室,按照規定,所有的鑰匙都必須放在公共鑰匙盒裡,老師不能帶鑰匙回家。每次老師上課前,都從公共鑰匙盒裡找到自己上課的教室的鑰匙去開門,上完課後,再將鑰匙放回到鑰匙盒中。

鑰匙盒一共有n個掛鉤,從左到右排成一排,用來掛n個教室的鑰匙。一串鑰匙沒有固定的懸掛位置,但鑰匙上有標識,所以老師們不會弄混鑰匙。

每次取鑰匙的時候,老師們都會找到自己所需要的鑰匙將其取走,而不會移動其他鑰匙。每次還鑰匙的時候,還鑰匙的老師會找到最左邊的空的掛鉤,將鑰匙掛在這個掛鉤上。如果有多位老師還鑰匙,則他們按鑰匙編號從小到大的順序還。如果同一時刻既有老師還鑰匙又有老師取鑰匙,則老師們會先將鑰匙全還回去再取出。

今天開始的時候鑰匙是按編號從小到大的順序放在鑰匙盒裡的。有k位老師要上課,給出每位老師所需要的鑰匙、開始上課的時間和上課的時長,假設下課時間就是還鑰匙時間,請問最終鑰匙盒裡面鑰匙的順序是怎樣的?

輸入格式

輸入的第一行包含兩個整數n, k。

接下來k行,每行三個整數w, s, c,分別表示一位老師要使用的鑰匙編號、開始上課的時間和上課的時長。可能有多位老師使用同一把鑰匙,但是老師使用鑰匙的時間不會重疊。

保證輸入資料滿足輸入格式,你不用檢查資料合法性。

輸出格式

輸出一行,包含n個整數,相鄰整數間用乙個空格分隔,依次表示每個掛鉤上掛的鑰匙編號。

樣例輸入

5 24 3 3

2 2 7

樣例輸出

1 4 3 2 5

思路

1.整個過程與老師是沒有關係的,所以不需要考慮老師進來,複雜化題目。

2.開始想的是設定乙個結構體teacher,即將乙個老師的完整操作:鑰匙的編號、取出時間、還鑰匙時間作為乙個整體。然後這個思路沒有繞出頭緒。

3.通過題目給出的樣例分析過程,可以看出來其實應該是將每個還鑰匙和取鑰匙的時刻看成乙個整體進行操作。因為每個鑰匙都有一取一還的操作,所以總體的時間段是固定的,也就是2*k。然後通過分析每乙個時刻,是做取鑰匙還是還鑰匙操作。取鑰匙就迴圈所有鑰匙,將取出鑰匙的位置至0;還鑰匙就迴圈所有鑰匙,在第乙個鑰匙位置為0處存放鑰匙。

4.按照給出的輸入進行初始化(對於還鑰匙的時間,就是借鑰匙+上課時長),然後直接對2*k個時刻進行排序操作,排序操作就是按照題目中給出的「如果有多位老師還鑰匙,則他們按鑰匙編號從小到大的順序還。如果同一時刻既有老師還鑰匙又有老師取鑰匙,則老師們會先將鑰匙全還回去再取出」。之前很想不通的乙個點就是考慮的因素不一樣,怎麼排序呢,相互之間的因素會串線的吧?其實並不是,因為最後是以每個時刻為乙個整體進行分析,無論是取是還,它都需要分析並得到這個時刻後的結果。所以直接對時刻(包含編號、時間、狀態)進行排序就好,之後的取還鑰匙過程按照這個順序進行就可以了。這樣就極大簡化了問題。

**一定不能夠把老師的一整套操作看成乙個整體,這樣很難繞出來。一定要把每乙個時刻單獨放出來,不需要想這樣就不能說明這是乙個老師的操作了啊,這個題目不需要考慮老師是誰,只需要考慮這個時刻操作的是哪個鑰匙。而且老師使用鑰匙的時間不重合,所以一定能保證對這把鑰匙上一次是這個老師借,下一次就是這個老師還(即在這個老師借鑰匙和還鑰匙的區間裡,不會有別人對這個鑰匙進行操作。所以不需要考慮別的情況,處理的狀態是取就迴圈所有鑰匙取,還就迴圈所有鑰匙還)。其實捋順了就很清晰

5.順便複習一下sort函式

#include //

需要的標頭檔案

sort(begin, end, cmp);

//其中begin為陣列的第乙個元素的指標,end為陣列的最後乙個元素的下乙個位置的指標,cmp引數為排序準則,如果沒有的話,預設以非降序排序。

bool cmp(xx a1,xx a2)

題解

#include#include

using

namespace

std;

struct

condition;

bool cmp(condition k1,condition k2)

else

else

}}int

main()

sort(con,con+k*2

,cmp);

intkeys[n];

for(int i=1;i1;i++)

//開始模擬

for(int i=0;i<2*k;i++)}}

//還鑰匙

else}}

} for(int i=1;i<=n;i++)

return0;

}

CCF 公共鑰匙盒

問題描述 有乙個學校的老師共用n個教室,按照規定,所有的鑰匙都必須放在公共鑰匙盒裡,老師不能帶鑰匙回家。每次老師上課前,都從公共鑰匙盒裡找到自己上課的教室的鑰匙去開門,上完課後,再將鑰匙放回到鑰匙盒中。鑰匙盒一共有n個掛鉤,從左到右排成一排,用來掛n個教室的鑰匙。一串鑰匙沒有固定的懸掛位置,但鑰匙上...

CCF 公共鑰匙盒

問題描述 有乙個學校的老師共用n個教室,按照規定,所有的鑰匙都必須放在公共鑰匙盒裡,老師不能帶鑰匙回家。每次老師上課前,都從公共鑰匙盒裡找到自己上課的教室的鑰匙去開門,上完課後,再將鑰匙放回到鑰匙盒中。鑰匙盒一共有n個掛鉤,從左到右排成一排,用來掛n個教室的鑰匙。一串鑰匙沒有固定的懸掛位置,但鑰匙上...

ccf公共鑰匙盒

題目 試題名稱 公共鑰匙盒 時間限制 1.0s 記憶體限制 256.0mb 問題描述 有乙個學校的老師共用n個教室,按照規定,所有的鑰匙都必須放在公共鑰匙盒裡,老師不能帶鑰匙回家。每次老師上課前,都從公共鑰匙盒裡找到自己上課的教室的鑰匙去開門,上完課後,再將鑰匙放回到鑰匙盒中。鑰匙盒一共有n個掛鉤,...