---恢复内容开始---

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.

Examples of laser rays. Note that image contains two examples. The 3 sensors (denoted by black bold points on the tube sides) will register the blue ray but only 2 will register the red.

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.

Input

The first line contains two integers n and y1 (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,…,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 m and y2 (1≤m≤1051≤m≤105 , y1<y2≤109y1<y2≤109 ) — number of sensors on the second line and its yy coordinate.

The fourth line contains mm integers b1,b2,…,bm(0≤bi≤1090≤bi≤109 ) — xx coordinates of the sensors on the second line in the ascending order.

Output

Print the only integer — the maximum number of sensors which can register the ray.

Example

Input
3 1
1 5 6
1 3
3
Output
3

Note

One of the solutions illustrated on the image by pair A2 and B2 .

题意:

给出n个点在y1的水平线上,给出m个点在y2的水平面上,有一道光线可以在这两个水平线中折射,并且从任意位置开始,求对多可以经过多少了点

思路:我们可以枚举光的折射长度,也就是从下界到上界再回到下界的长度,可以发现这样两界面的高度y可以忽略

另外,我们不可能从1枚举1e9。

①显然,任何奇数步长可以有步长1取代

关键就是偶数步长,任何偶数长度可以有 2n   *  m (n>=1,m为奇数), 因为任何偶数都可以被2整除,那么当商为偶数时,我们可以将商提出2,将2乘上2,这样仍是2的幂次,然后直到商就变成了奇数

②偶数可以用2n代替

综上,枚举长度2 (0 <= n <=  log(1e9)),

然后我们可以知道,对于一个定长度的步长,然后界面上的点取模2倍步长,余数相同的就是在一条折射线上的,对于另一界面,不能直接取模2倍步长,应该加上步长再取模2倍步长

#include<bits/stdc++.h>
using namespace std;
int n,m;
const int maxn = 1e5+;
int a[maxn];
int b[maxn];
int tmp[maxn<<]; int main()
{
int val;
scanf("%d%d",&n,&val);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
scanf("%d%d",&m,&val);
for(int i=;i<=m;i++)scanf("%d",&b[i]);
int ans = ;
int tot = n+m;
tmp[tot+] = 2e9+;
for(int step = ;step <= int(1e9);step<<=)
{
int mod = step<<;
for(int i=;i<=n;i++)tmp[i] = a[i]%mod;
for(int i=;i<=m;i++)tmp[i+n] = (b[i]+step)%mod;
sort(tmp+,tmp++tot);
for(int i=,last=;i<=tot;i++)
{
if(tmp[i+] != tmp[i])
{
ans = max(ans,i+-last);
last = i+;
}
}
}
printf("%d\n",ans);
}

L - Ray in the tube Gym - 101911L (暴力)的更多相关文章

  1. Codeforces 1041F Ray in the tube (看题解)

    Ray in the tube 感觉是套路题.. 如果确定一个差值x我们如何取确定答案呢, 我们把a[ i ] -> a[ i ] % (2 * x), 把b[ i ] -> (b[ i ...

  2. CF 1041 F. Ray in the tube

    F. Ray in the tube 链接 题意: 有两条平行于x轴的直线A,B,每条直线上的某些位置有传感器.你需要确定A,B轴上任意两个整点位置$x_a$,$x_b$,使得一条光线沿$x_a→x_ ...

  3. Codeforces | CF1041F 【Ray in the tube】

    昨天晚上全机房集体开\(Div2\),因为人傻挂两次\(B\)题的我开场就\(rank2000+\dots qwq\)于是慌乱之中的我就开始胡乱看题(口胡),于是看了\(F\dots\)(全机房似乎也 ...

  4. Codeforces.1041F.Ray in the tube(思路)

    题目链接 \(Description\) 有两条平行于\(x\)轴的直线\(A,B\),每条直线上的某些位置有传感器.你需要确定\(A,B\)轴上任意两个整点位置\(x_A,x_B\),使得一条光线沿 ...

  5. The 2016 ACM-ICPC Asia China-Final L World Cup(深搜+回溯 暴力求解)

    题目分析: 对于A,B,C,D四支队伍,两两之间进行一场比赛,获胜得3分,平局得1分,失败不得分,现在对给出的四个队伍的得分,判断能否满足得到这种分数,且方案唯一输出yes,不唯一输出no,不可能则输 ...

  6. Ice Igloos Gym - 101480I (暴力技巧)

    Problem I: Ice Igloos \[ Time Limit: 10 s \quad Memory Limit: 512 MiB \] 题意 给出\(n\)个圆,给出每个圆的坐标\(x\). ...

  7. Codeforces Round #509 (Div. 2) F. Ray in the tube(思维)

    题目链接:http://codeforces.com/contest/1041/problem/F 题意:给出一根无限长的管子,在二维坐标上表示为y1 <= y <= y2,其中 y1 上 ...

  8. 【杂题】cf1041fF. Ray in the tube

    死于没有处理边界 题目描述 题目大意 在两面镜子上各选定一个整数位置的点 A 与 B,并从其中一个点向另一个射出一条光线,使得接收到光线的传感器数量尽可能的多.传感器不重叠. 题目分析 我们来初步考虑 ...

  9. Gym 101158D(暴力)

    题意:给定两个长度为N的字符串,1<=N<=4000,求满足字符串1中的某个区间所有的字母种类和个数都与字符串2中的某个区间相同最长的区间长度. 分析: 1.预处理每个串字母个数的前缀和. ...

随机推荐

  1. Java中关于string的些许问题及解析

    问题一:String 和 StringBuffer 的区别JAVA 平台提供了两个类: String 和 StringBuf fer ,它们可以储存和操作字符串,即包含多个字符的字符数据.这个 Str ...

  2. "字体arial不支持样式regular"的解决方法

    软件报错,提示“字体arial不支持样式regular”的提示,这是由于字体arial缺失导致的, “字体arial不支持样式regular”的解决方法如下: 方法/步骤 1.用户需要先下载arial ...

  3. vue-cli3初尝试之路径别名配置

    let path = require('path') function resolve(dir) { return path.join(__dirname, dir) } module.exports ...

  4. cf949C 建模,SCC缩点

    /* 给定n个数据中心,m份资料,每份资料在其中的两个中心备份,一天可供下载的时间是h小时 中心i在第hi小时需要维护,无法下载 现在要将一些中心的维护时间往后推1小时,使得任意时刻每份资料都可以被下 ...

  5. cf1076d 贪心最短路

    #include<bits/stdc++.h> #include<queue> using namespace std; #define maxn 300005 #define ...

  6. 在一些开源框架中,dist文件夹是什么意思

    全称是distribution. distribution英 [dɪstrɪ'bjuːʃ(ə)n]美 ['dɪstrə'bjʊʃən]: 发行版 n. 分布:分配 在某些框架中,因为开发和发布是的内容 ...

  7. Spring Boot如何使用Runner实现启动时调用?用法和原理都在这里

    在日常的项目开发中经常会遇到这样的需求:项目启动的时候进行一些一次性的初始化工作,如读取加载资源文件.或者执行其它外部程序. 这个时候我们就可以用到spring-boot为我们提供的一种扩展机制--R ...

  8. Python中的函数介绍

    调用函数 python中有很多内置函数,我们可以直接调用,内置函数能直接在官网查看:https://docs.python.org/3/library/functions.html#abs 定义函数 ...

  9. python面向对象三大特性-多态

    import abc #利用abc模块实现抽象类 class All_file(metaclass=abc.ABCMeta): all_type='file' @abc.abstractmethod ...

  10. stream to byte[], byte[] to srting

    byte[] myBinary = new byte[paramFile.Length]; paramFile.Read(myBinary, , (int)paramFile.Length); str ...