You are given a tube which is reflective inside represented as two non-coinciding, but parallel to OxOx lines. Each line has some special integer points — positions of sensors on sides of the tube.
You are going to emit a laser ray in the tube. To do so, you have to choose two integer points AA and BB on the first and the second line respectively (coordinates can be negative): the point AA is responsible for the position of the laser, and the point BB — for the direction of the laser ray. The laser ray is a ray starting at AA and directed at BB which will reflect from the sides of the tube (it doesn't matter if there are any sensors at a reflection point or not). A sensor will only register the ray if the ray hits exactly at the position of the sensor.
Calculate the maximum number of sensors which can register your ray if you choose points AA and BB on the first and the second lines respectively.
The first line contains two integers nn and y1y1 (1≤n≤1051≤n≤105, 0≤y1≤1090≤y1≤109) — number of sensors on the first line and its yy coordinate.
The second line contains nn integers a1,a2,…,ana1,a2,…,an (0≤ai≤1090≤ai≤109) — xx coordinates of the sensors on the first line in the ascending order.
The third line contains two integers mm and y2y2 (1≤m≤1051≤m≤105, y1<y2≤109y1<y2≤109) — number of sensors on the second line and its yycoordinate.
The fourth line contains mm integers b1,b2,…,bmb1,b2,…,bm (0≤bi≤1090≤bi≤109) — xx coordinates of the sensors on the second line in the ascending order.
Print the only integer — the maximum number of sensors which can register the ray.
3 1 1 5 6 1 3 3
3
One of the solutions illustrated on the image by pair A2A2 and B2B2.
考试的时候智障没想出来,下来去剪头的时候突然知道怎么做。
首先考虑如果没有整点限制我们直接把斜率接近inf就可以完成经过所有点这个操作。
那么我们可不可以贪心呢?可不可以选最小的单位1作为距离呢?
我们发现1不能凑出2,具体来说是这样:
其中黑色的是1,红色的是2,绿色的是4 。因为有两边的原因,所以和奇偶性有关。
那么我们只要枚举2^n然后把所有点在模意义下枚举扔进map就行了。
代码呢?有点懒没写
没有帐号? 立即注册