AcWing 3263. 买菜-python3-双指针
原题链接
简单
import sys
def main():
readline = sys.stdin.readline
n = int(readline().strip())
h = [[int(s) for s in readline().strip().split()] for _ in range(n)] # 小华装车时间
w = [[int(s) for s in readline().strip().split()] for _ in range(n)] # 小王装车时间
hi, wi = 0, 0 # 两个指针
total = 0
while hi < n and wi < n:
a, b = h[hi]
c, d = w[wi]
# print(f"这一波是({a, b}) 和 ({c, d})")
if a <= d and c <= b: # 交叉
t = sorted([a, b, c, d]) # 排序后,中间的两个时间就是交叉的时间
t.pop(0) # 去掉头和尾,只剩下中间了
t.pop(-1)
t = abs(t[0] - t[1])
# print(f"他们谈了{t}")
total += t
if b <= d: # h先结束了,说明这段不会再和其他交叉了,所以指向下一个
hi += 1
else:
wi += 1
print(total)
main()