牛牛在一条街道上准备种一批树,这个街道有n个种树的坑位,分别编号为1到n。牛牛雇佣了m个小牛进行种树,每一个小牛负责一组连续编号的树坑进行种植,小牛负责的连续编号表示为[a, b),a表示起始编号,b表示终止编号,注意种植的编号范围是左闭右开。如果小牛在种植的过程中发现某个坑位已经有树种好了,则跳过这个坑位后继续种植。问牛牛所负责的街道最终一共能够种下几棵树?返回这个结果。
牛牛在一条街道上准备种一批树,这个街道有n个种树的坑位,分别编号为1到n。牛牛雇佣了m个小牛进行种树,每一个小牛负责一组连续编号的树坑进行种植,小牛负责的连续编号表示为[a, b),a表示起始编号,b表示终止编号,注意种植的编号范围是左闭右开。如果小牛在种植的过程中发现某个坑位已经有树种好了,则跳过这个坑位后继续种植。问牛牛所负责的街道最终一共能够种下几棵树?返回这个结果。
第一行一个整数n表示街道的坑位数量,一个整数m表示小牛的数量,用空格隔开;
后m行每行两个数字ai,bi,用逗号隔开,表示对应的小牛所负责的种树编号范围[ai,bi)。
输出一个整数,表示最后一共能种下几棵树。
10 3 1,5 3,7 6,10
10
import sys line1 = sys.stdin.readline() l1 = line1.split(' ') # 坑位数 n = int(l1[0]) # 小牛数 m = int(l1[1]) data = [] for line in sys.stdin: a = line.split(',') data.append(list(map(int, a))) data.sort(key=lambda x:x[0]) interval = [data[0]] ans = 0 for i in range(1, m): if interval[-1][-1] >= data[i][0]: interval[-1][-1] = max(interval[-1][-1], data[i][-1]) else: interval.append(data[i]) for item in interval: ans += item[-1] - item[0] + 1 print(ans)