本を分かち合う
5939 ワード
質問リンク
本を分かち合う
コード#コード#
T = int(input())
for test_case in range(T):
num_list = list(map(int, input().split()))
book = num_list[0]
students = num_list[1]
student_list = []
book_list = []
max_total_student = 0
for books in range(1,book+1):
book_list.append(books)
for student in range(students):
num_list = list(map(int, input().split()))
#idx = num_list[1] - num_list[0]
student_list.append(num_list)
student_list.sort(key = lambda x:x[1])
for student in student_list:
min_book = student[0]
max_book = student[1]
for i in range(min_book, max_book+1):
if i in book_list:
book_list.remove(i)
max_total_student+=1
break
print(max_total_student)
問題特殊事項
最初はBackTrackで解いてみました.
入れられる最小番号から、入れられる最大番号を全て+入れない
再帰エラーが発生する回数が多すぎます
2つ目の方法はabs、すなわちminbookとmaxbookのサイズが最も小さい順に並べ替えて入れてみることです.
ほとんどのケースは解決されましたが、次の場合にエラーが発生します.
1
4 4
1 2
2 3
3 4
1 3
最後にmaxbookの順番で並べ替え、入れるときはまずminbookを入れます.
Reference
この問題について(本を分かち合う), 我々は、より多くの情報をここで見つけました https://velog.io/@youngjin_kim2/9576.-책-나눠주기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol