from math import inf import sys from collections import deque n = list(map(int, input().split()))[0] # 活动数 arr = [] flag = [] for _ in range(n): arr.append(list(map(int, input().split()))) arr = sorted(arr,key=lambda x:x[1]) #贪心算法是可以被调度的活动中具有最早结束时间的那个 a0 = 0 #print(arr) flag.append(0) for j in range(1,n): if arr[j][0] >= arr[a0][1]: a0 = j flag.append(a0) print(len(flag))
由于数组比较大,优先考虑只用一层循环
所以先排序,再去选择选择序列
排序的方法,用了sorted函数,我这个是表示按照第二列的数据从小到大排列
贪心算法就是从结束时间最短的那个活动开始,选择可以被调度的活动中最早结束的,因为已经按照结束时间排序了,所以只需要从头往后循环,找到的第一个能够被调度的活动其实就是最早结束的,然后把这个活动作为起点,再去比较。