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;
}
posted @ 2021-12-16 14:26  Eason_AC  阅读(14)  评论(0)    收藏  举报