BOJ 1931会議室の手配
質問する
会議室があり、それを使用するN個の会議について、会議室使用表を作成します.各会議Iには、開始時間と終了時間があり、各会議が重複しないように、会議室の最大数を見つけます.しかし、会議が始まると、途中で中断することはできません.一つの会議が終わると同時に、次の会議が始まる可能性があります.会議の開始時間と終了時間は同じかもしれません.この場合、最初から終わっていると考えられます.
解答方法
簡単です.所定の時間内にできるだけ多くの会議を開くためには、1回目の会議の開始時間が早ければ早いほど、会議が終わると次の会議が始まります.たとえば、会議のスケジュール(0,1)、(1,2)、(2,3)、および(1,3)があるとします.(0,1)、(1,3)にスケジュールするよりも(0,1)、(1,2)、(2,3)にスケジュールすると、より多くの会議が開かれます.筆者は2回のソートでこの問題を簡単に解決できる.
コード#コード#
import sys
input=sys.stdin.readline
n = int(input())
lis = [tuple(map(int,input().split())) for _ in range(n)]
a = sorted(lis,key=lambda x : (x[1],x[0]))
last = 0
cnt = 0
for i, j in a:
if i >= last:
cnt += 1
last = j
print(cnt)
Reference
この問題について(BOJ 1931会議室の手配), 我々は、より多くの情報をここで見つけました https://velog.io/@wltjq4300/BOJ-1931-회의실-배정-gf3rf993テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol