我正在尝试解决此问题:https://open.kattis.com/problems/classrooms
在校园中有?教室和?建议的活动 被分配一个场地。每个拟议的活动都有明确的起点 时间??和结束时间??。任何此类活动都应进行 在其中一间教室。 ?任何一个教室都足够大 举行任何拟议的活动,每个教室可以举行 任何时候最多一项活动。建议的任何活动都不能参加 同时放在同一间教室。即使两个提议 活动暂时重叠(一项活动的结束时间等于 另一个活动的开始时间),则无法将其分配给 同一间教室。
提议的活动太多,可能还不够 教室举行所有活动。希望有尽可能多的 活动越好。最多可以建议多少个活动 分配到教室吗?
输入第一行包含两个正整数?和? (1≤?≤?≤200000),代表拟议活动的数量和 教室的数量。
以下?行每行包含两个正整数:?th 这些?行中的一行包含contains和??(1≤??≤??≤109), 指示拟议活动的开始时间和结束时间
我想出了一个贪婪的解决方案,可以按结束时间对类进行排序,然后检查是否有可能根据贪婪条件将类分配给活动
'''
https://open.kattis.com/problems/classrooms
'''
from collections import deque
n,k = map(int,input().split())
classes = []
for _ in range(n):
(start,end) = map(int,input().split())
classes.append((start,end))
classes.sort(key=lambda x: x[1])
queue = deque()
count = 0
for (start,end) in classes:
if queue and queue[0] < start:
queue.popleft()
queue.append(end)
count += 1
elif len(queue) < k:
count += 1
queue.append(end)
print(count)
但是,这在一些(隐藏的)测试用例上失败了。
有人能指出我正确的方向吗?解决这个问题的正确方法是什么?