PTA 7-5 實驗室使用排期 (25 分)

題目

受新冠疫情影響,當前大家的活動都必須注意保持充分的社交距離,國家實驗室的使用也同樣受到了嚴格的限制。假設規定任何一個時間點上,實驗室內最多隻能有 1 個人,且每個人都必須提前申請實驗室的使用,只有申請被批准後才能進入。現給定一批第二天的實驗室使用申請,你需要寫個程序自動審批,使得能夠被批准的申請數量最大化。

輸入格式:
輸入第一行首先給出一個正整數 N(≤2×10
3
),爲申請總量。隨後 N 行,每行按以下格式給出申請信息:

hh:mm:ss hh:mm:ss
其中 hh:mm:ss 表示一天內的時間點“小時:分鐘:秒鐘”,最早從 00:00:00 開始,最晚到 23:59:59 結束。第一個時間點爲進入實驗室的時間,第二個是離開時間。題目保證離開時間在進入時間之後。

注意所有時間都在一天之內。時間按 24 小時顯示。

輸出格式:
在一行中輸出能夠被批准的最大申請數量。

輸入樣例:
7
18:00:01 23:07:01
04:09:59 11:30:08
11:35:50 13:00:00
23:45:00 23:55:50
13:00:00 17:11:22
06:30:50 11:42:01
17:30:00 23:50:00
結尾無空行
輸出樣例:
5
結尾無空行
樣例解釋:
除了最後兩個申請,其它都可以被批准。

解題思路

N = int(input())
# N = 7

def zhuanhua(input:str)->int:
    h,m,s = map(int,input.split(":"))
    res = s+m*60+h*60*60
    return res
inputList = []
for _ in range(N):
    start, end = map(zhuanhua, input().split())
    # start, end = map(zhuanhua, "18:00:01 23:07:01".split())
    inputList.append((start, end))
inputList.sort(key= lambda x:(-x[1],x[0]))
start = 0
maxEndTime = zhuanhua("23:59:59")
res = 0
# print(inputList)
for x,y in inputList:
    if y<=maxEndTime:
        maxEndTime = x
        res += 1
print(res)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章