B. 激光
每次测试时间限制:2 秒
每次测试内存限制:256 兆字节
有一个二维坐标平面,范围从 (0,0) 到 (x,y)。
你的起点在 (0,0),想要到达 (x,y)。
不过,有 n 条水平激光,第 i 条是连续线段 (0,ai) 到 (x,ai)。
还有 m 条垂直激光,第 i 条是连续线段 (bi,0) 到 (bi,y)。
你可以沿任意方向移动到达 (x,y),但你的运动必须是平面内部的连续曲线。
每当你穿过一条水平或垂直激光,都算作一次穿越。特别地,如果你经过两条激光的交点,这算作两次穿越(因为同时穿过了一条水平激光和一条垂直激光)。
例如,如果 x=y=2,n=m=1,a=[1],b=[1],一种可能的移动路径如下:
请问:到达 (x,y) 最少需要穿越多少次激光?
输入
第一行包含 t(1≤t≤104)——测试用例的数量。
每个测试用例的第一行包含四个整数 n,m,x,y(1≤n,m≤2⋅105,2≤x,y≤109)。
接下来一行包含 n 个整数 a1,a2,…,an(0<ai<y),表示水平激光的 y 坐标。保证 ai>ai−1 对所有 i>1 成立。
接下来一行包含 m 个整数 b1,b2,…,bm(0<bi<x),表示垂直激光的 x 坐标。保证 bi>bi−1 对所有 i>1 成立。
保证所有测试用例的 n 之和以及 m 之和都不超过 2⋅105。
输出
对于每个测试用例,输出一个整数,表示到达 (x,y) 所需的最小穿越次数。
示例
输入:
2
1 1 2 2
1
1
2 1 100000 100000
42 58
32
输出:
2
3