链接:https://ac.nowcoder.com/acm/problem/18951
来源:牛客网
平面上有n个点,现在你需要建造两条路,一条是斜率为1,
另一条斜率为-1
你的任务是让这两条路经过尽可能多的点
求最多经过几个点
输入描述:
第一行输入一个整数N表示点的个数 第二行输入N个数表示X坐标 第三行输入N个数表示Y坐标 1<=N<=1000 ,0<=x[i],y[i]<=999
输出描述:
输出一个整数
示例1
输入
复制
4 1 4 4 5 3 0 2 3
输出
复制
4
说明
(1,3) (4,0) (4,2) (5,3)四个点都可以被经过
无脑暴力 y+x=b1 y-x=b2
遍历所有给的点,将b1,b2丢进map中,然后对所有b1,b2枚举,找到每一份b1,b2经过的点的个数,取最大
剪枝版
构建两个vector v1v2,在首次遍历求b1b2的时候维护,
v1存大于最多次出现或者等于最多次出现的b1的次数,
v2存大于最多次出现或者等于最多次出现的b2的次数,
大于很好理解,就是b1出现次数最多,那肯定选这条直线,等于的话,就有可能这条直线和之前最多相交点数的直线一