需求描述:活动选择问题优化方案
问题背景:某会议中心在同一天内收到多个活动的场地使用申请,每个活动都有明确的开始时间和结束时间。由于场地资源有限,同一时间只能举办一个活动。为了最大化利用场地资源,需要设计一个算法,选择出尽可能多的活动进行安排。 输入数据:
- 活动集合
Activities,每个活动由一个二元组(start_time, end_time)表示,其中start_time和end_time为非负整数,单位为分钟(例如,(10, 30)表示活动从第 10 分钟开始,第 30 分钟结束)。 - 活动数量
n,满足1 <= n <= 10000。 输出要求: - 输出一个整数,表示最多可以安排的活动数量。
- 输出一个列表,按顺序列出被选中活动的编号(假设活动编号从 0 开始)。 约束条件:
- 活动的开始时间必须小于结束时间,即
start_time < end_time。 - 选中的活动之间不能有时间重叠(允许前一个活动结束的瞬间开始下一个活动)。 示例:
- 输入:
Activities = [(1, 4), (3, 5), (0, 6), (5, 7), (3, 8), (5, 9), (6, 10), (8, 11), (8, 12), (2, 13), (12, 14)] - 输出:
- 最多活动数量:
4 - 选中活动编号:
[0, 3, 7, 9](对应活动(1, 4), (5, 7), (8, 11), (2, 13)) 目标:使用贪心算法设计一个高效的解决方案,在时间复杂度尽可能低的情况下完成活动选择,优先选择结束时间早的活动以确保后续有更多可选空间。
- 最多活动数量: