选择不相交区间-蓝桥解题
有n项工作,每项工作分别在si时间开始,在ti时间结束.
对于每项工作,你都可以选择参与与否.如果选择了参与,那么自始至终都必须全程参与.
此外,参与工作的时间段不能重复(即使是开始的瞬间和结束的瞬间的重叠也是不允许的).
你的目标是参与尽可能多的工作,那么最多能参与多少项工作呢?
1≤n≤100000
1≤si≤ti≤10^9
输入:
第一行:n
第二行:n个整数空格隔开,代表n个工作的开始时间
第三行:n个整数空格隔开,代表n个工作的结束时间
样例输入:
5
1 2 4 6 8
3 5 7 9 10
样例输出:
3 说明:选取工作1,3,5
n_start = map(int, input().split())
n_end = map(int, input().split())
n = list(zip(n_start, n_end))
x = sorted(n, key=lambda x: x[-1])
count = 1
i = 0
q = []
q.append(x[0])
while True:
if i >= len(x)-1:
break
for j in range(i+1,len(x)):
if i == len(x) -1:
i+=1
break
if x[i][-1] < x[j][0]:
i = j
q.append(x[i])
count += 1
break
print(count, q)
# 3 [(1, 3), (4, 7), (8, 10)]

浙公网安备 33010602011771号