目录
一、题目
1、题目描述
2、输入输出
2.1输入
2.2输出
3、原题链接
二、解题报告
1、思路分析
2、复杂度
3、代码详解
一、题目
1、题目描述
2、输入输出
2.1输入
2.2输出
3、原题链接
Problem - 1029C - Codeforces
二、解题报告
1、思路分析
线段相交具有可重复贡献性:整个区间的交等价于把区间分为若干部分,分别求交再求交
那么我们只需维护每个线段的前后缀区间的线段交
然后枚举删除的线段,删除后的最大线段交就是前缀交线段和后缀交线段的交
2、复杂度
时间复杂度: O(n) 空间复杂度:O(n)
3、代码详解
import sys
from math import inf
# sys.stdin = open('in.txt', 'r')
input = lambda: sys.stdin.readline().strip()
write = lambda x: sys.stdout.write(str(x))
n = int(input())
lines = [tuple(map(int, input().split())) for _ in range(n)]
prel, prer = [-inf] * n, [inf] * n
for i in range(1, n):
prel[i] = max(lines[i - 1][0], prel[i - 1])
prer[i] = min(lines[i - 1][1], prer[i - 1])
sufl, sufr = -inf, inf
ans = 0
for i in range(n - 1, -1, -1):
ans = max(ans, min(sufr, prer[i]) - max(sufl, prel[i]))
sufl = max(sufl, lines[i][0])
sufr = min(sufr, lines[i][1])
write(ans)