题目解析
本题可以使用很多方法解决,这里使用集合的思想来获取两个线段的交集:
1. 令交集的左端点为 LLL,右端点为 RRR。
2. 那么 L=max(L1,L2), R=min(R1,R2)L = \max{(L_1, L_2)},\ R = \min{(R_1, R_2)}L=max(L1 ,L2 ), R=min(R1 ,R2 )。
对于本题,若 L≤RL \leq RL≤R 则交集存在,交集的线段长度为 R−LR - LR−L,否则交集不存在,长度为 000。
语法小课堂
1. 使用 std::max(a, b) 可以获取 a 和 b 中较大的那个;反之使用 std::min(a, b) 可以获取 a 和 b 中较小的那个。
注意:a 和 b 的类型一定要严格一致,并且 int 和 long long 会被认为是两种完全不同的类型。
2. 条件运算符:E1 ? E2 : E3 。若 E1 为 true 则表达式的结果为 E2,否则为 E3。
AC代码
C++ 代码:
Python 代码: