水题,直接开个桶统计一下,然后分类讨论即可。要求每个数至少出现一次,且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; }