keyword:数组、排序
python
n = int(input())
d = {}
for _ in range(n):
a, b = map(int, input().split())
if (a in d and d[a] < b) or a not in d:
d[a] = b
d = sorted(d.items(), key=lambda x: x[0])
ans = 0
l, r = d[0][0], d[0][1]
for i, j in d[1:]:
if i <= r:
if j > r:
r = j
else:
ans += r - l
l, r = i, j
ans += r - l
print(ans)
先存起来排序
每种情况分别判断下一段区间:
--下一段左区间在当前区间内,合并两段区间,更新右区间为两段最大的右区间
--下一段左区间在当前区间外,把当前区间长度累加到变量中,更新左右区间为下一段左右区间
坑点是题目说左闭右闭,实际上是左闭右开