文章目录
- 考虑到一个活动
开始时间和结束时间s,e
,那么可以影响到的范围就是s-d+1,e
,所以我们只需对这个每一个活动可以影响到的区域进行标记即可
,当然为了降低时间复杂度,我们将使用前缀和与差分
python
t = int(input())
for _ in range(t):
n,d,k = map(int,input().split())
# 定义pre[i] 定义为 0 到 i 位置的前缀和问题
pre = [0]*(n+2)
for i in range(k):
s,e = map(int,input().split())
pre[max(1,s-d+1)] += 1
pre[e+1] -= 1
# 需要求解前缀和
curbro,curmom = 0,0
cur = 0
bro,mom = -1,float("inf")
for i in range(1,n+2-d):
cur += pre[i]
if cur > bro:
curbro = i
bro = cur
if cur < mom:
curmom = i
mom = cur
print(curbro,curmom)