题解:AT_arc195_b [ARC195B] Uniform Sum
令
令数组
如果最终我们希望
此时数组
当然,因为
首先特判掉一个特殊情况:如果
现在我们只需要求解所有
但是怎样快速的求出这
#include <bits/stdc++.h>
using namespace std;
const int N = 2010;
int n, a[N], b[N];
unordered_map<int, int> A, B, f;
signed main() {
cin >> n;
int mx = 0;
for (int i = 1; i <= n; ++ i ) {
cin >> a[i];
A[a[i]] ++ ;
mx = max(mx, a[i]);
}
for (int i = 1; i <= n; ++ i ) {
cin >> b[i];
B[b[i]] ++ ;
mx = max(mx, b[i]);
}
for (auto [i, x] : A)
if (i != -1)
for (auto [j, y] : B)
if (j != -1)
f[i + j] += min(x, y);
if (A[-1] >= n - B[-1]) {
cout << "Yes\n";
return 0;
}
for (auto [i, x] : f)
if (i >= mx && A[-1] >= n - B[-1] - x) {
cout << "Yes\n";
return 0;
}
cout << "No\n";
return 0;
}