整列図例[白俊1931号]
1053 ワード
白駿「会議室の手配」問題
終了時間を優先的に昇順に並べ替えた後、終了時間が同じであれば、開始時間も昇順に並べ替えます.
最初は終わりの時間だけ並べ替えていましたが失敗してしまい、質問で反例を見たら直すことができました.
ソースコード
(五六)飛んで行ったのが見えます.開始時間を並べ替えていないので(6,6)先にpush,(5,6)条件に合わないため破棄される.
したがって,開始時間も以下のようにソートする.
終了時間を優先的に昇順に並べ替えた後、終了時間が同じであれば、開始時間も昇順に並べ替えます.
最初は終わりの時間だけ並べ替えていましたが失敗してしまい、質問で反例を見たら直すことができました.
ソースコード
n=int(input())
timeline=[]
stack=[]
for i in range(n):
s,e=map(int,input().split())
timeline.append((s,e))
timeline.sort(key=lambda x:(x[1],x[0]))
stack.append(timeline.pop(0))
while timeline:
time=timeline.pop(0)
if stack[-1][1]<=time[0]:
stack.append(time)
print(len(stack))
最初から.timeline.sort(key=lambda x:x[1])
こうして終了した時間を並べ替えました.これにより、次の反例では、このような誤った答えが出力されます.(正解:5)(五六)飛んで行ったのが見えます.開始時間を並べ替えていないので(6,6)先にpush,(5,6)条件に合わないため破棄される.
したがって,開始時間も以下のようにソートする.
timeline.sort(key=lambda x:(x[1],x[0]))
修正の結果は以下の通りです.Reference
この問題について(整列図例[白俊1931号]), 我々は、より多くの情報をここで見つけました https://velog.io/@94kdh0823/튜플-정렬하기-백준-1931번テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol