链接:https://codeforces.com/contest/1133/problem/D
题意:
给两个数组a,b。
同时ci = ai * d + bi。
找到一个d使c数组中的0最多。
求出最多几个0。
思路:
map记录b/a对应的个数。
同时a和b等于0时。满足任意d使c等于0。
直接额外加上。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN = 2e5 + 10;
int a[MAXN];
int n;
map<long double, int> r;
int main()
{
cin >> n;
for (int i = 1;i <= n;i++)
cin >> a[i];
int res = 0;
int other = 0;
long double b;
for (int i = 1;i <= n;i++)
{
cin >> b;
if (a[i] == 0)
{
if (b == 0)
other++;
continue;
}
long double k = b / a[i];
r[k]++;
res = max(res, r[k]);
}
cout << res + other << endl;
return 0;
}
//