水题,直接开个桶统计一下,然后分类讨论即可。要求每个数至少出现一次,且max出现次数-min出现次数 <= 1即可。
具体构造方案类似于 789 123456789 1234...
如果出现次数不是连续的,比如 2 2 2 3 3 2 3 2 2而非 3 3 2 2 2 2 2 2 3, 也可以构造,因为按照题意,1到9的数字没任何区别,可以随意排序。
#include<bits/stdc++.h>
using i64 = long long;
int main() {
std::cin.tie(nullptr)->sync_with_stdio(false);
int n;
std::cin >> n;
std::vector<int> cnt(10);
while (n--) {
int x;
std::cin >> x;
cnt[x]++;
}
int mx = 0, mi = 1e8;
for (int i = 1; i <= 9; i++) {
if (!cnt[i]) {
std::cout << "NO";
return 0;
}
mx = std::max(mx, cnt[i]);
mi = std::min(mi, cnt[i]);
}
if (mx - mi > 1) {
std::cout << "NO";
return 0;
}
std::cout << "YES";
return 0;
}

京公网安备 11010502036488号