链接: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; } //