0
点赞
收藏
分享

微信扫一扫

对象序列化和反序列化

绣文字 2024-04-27 阅读 13

目录

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

二、解题报告

1、思路分析

2、复杂度

3、代码详解


一、题目

1、题目描述

2、输入输出

2.1输入
2.2输出

3、原题链接

Problem - 1029C - Codeforces


二、解题报告

1、思路分析

线段相交具有可重复贡献性:整个区间的交等价于把区间分为若干部分,分别求交再求交

那么我们只需维护每个线段的前后缀区间的线段交

然后枚举删除的线段,删除后的最大线段交就是前缀交线段和后缀交线段的交

2、复杂度

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)
举报

相关推荐

0 条评论