#12390. B. 激光器(Lasers)
B. 激光器(Lasers)
Codeforces Round 1050 (Div. 4)
B. 激光器 (Lasers)
每个测试的时间限制: 2 秒 内存限制: 256 兆字节
在一个二维坐标平面上,范围是从 (0,0) 到 **(x,y)。 你位于 (0,0),并希望到达 (x,y)**。
然而,存在 n 条水平激光,第 i 条激光连续覆盖从 (0,aᵢ) 到 **(x,aᵢ)。此外,还有 m 条竖直激光,第 i 条激光连续覆盖从 (bᵢ,0) 到 (bᵢ,y)**。
你可以以任意方向移动以到达 **(x,y)**但是你的移动必须是一条位于平面内的连续曲线。 每当你穿过一条竖直或水平激光时,计为一次穿越。特别地,如果你经过两条激光的交点,则计为两次穿越。
例如, 如果 (x=y=2,n=m=1,a=[1],b=[1])
移动路径可以如下所示:
问题: 到达 (x,y) 所需的最少穿越次数是多少?
输入
第一行包含一个整数 t (1 ≤ t ≤ 10⁴) —— 测试用例的数量。
每个测试用例的第一行包含四个整数 n, m, x, y (1 ≤ n,m ≤ 2⋅10⁵, 2 ≤ x,y ≤ 10⁹)。
接下来一行包含 n 个整数 a₁,a₂,…,aₙ (0 < aᵢ < y) —— 水平激光的纵坐标。保证对所有 i > 1,有 aᵢ > aᵢ₋₁。
接下来一行包含 m 个整数 b₁,b₂,…,bₘ (0 < bᵢ < x) —— 竖直激光的横坐标。保证对所有 i > 1,有 bᵢ > bᵢ₋₁。
保证所有测试用例中 n 与 m 的总和不超过 2⋅10⁵。
输出
对于每个测试用例,输出到达 (x,y) 所需的最少穿越次数。
示例
输入
2
1 1 2 2
1
1
2 1 100000 100000
42 58
32
输出
2
3