LuoguP7375 [COCI2018-2019#5] Jarvis 题解
Content
有 \(n\) 架无人机,每架无人机都有一个当前属性值 \(a_i\) 和出战属性值 \(b_i\)。你可以给每架无人机的当前属性值同时加一个数 \(x\)(但只能做一次),使得能够出战的无人机最多,求最多能够出战的无人机数量。
数据范围:\(n\in[1,10^5],a_i,b_i\in[-10^6,10^6]\)。
Solution
我们开个计数器(这里建议使用 STL 里面的 \(\texttt{map}\))记录每个 \(b_i-a_i\) 出现过的次数,取最大值即可。显然可以证明此时的答案即为题目所求。
Code
int n, a[100007], b[100007], ans;
map<int, int> vis;
int main() {
//freopen(".in", "r", stdin);
//freopen(".out", "w", stdout);
n = Rint;
F(i, 1, n) a[i] = Rint;
F(i, 1, n) vis[(b[i] = Rint) - a[i]]++, ans = max(ans, vis[b[i] - a[i]]);
printf("%d", ans);
return 0;
}