B - Colorful Hats
题意:有n个颜色,第i个数字表示第i个颜色不同的数量,求输入的数据是否有矛盾。
一个数学题目,可惜推不出来。只能看大佬的了。
1 #include <bits/stdc++.h> 2 #define ll long long 3 using namespace std; 4 int main(){ 5 int n; 6 cin >> n; 7 vector<int> a(n); 8 int ans = 0; 9 for(int i = 0; i < n; i ++) scanf("%d",&a[i]); 10 sort(a.begin(),a.end()); 11 int minn = a[0]; 12 int maxn = a.back(); 13 if(minn == maxn){ 14 if(minn*2 <= n || minn == n-1) ans = 1; 15 } 16 if(maxn == minn +1 ){ 17 int cnt = 0; 18 for(int i = 0; a[i] == minn; i++) cnt++; 19 if(maxn > cnt && cnt + 2*(maxn-cnt) <= n) ans = 1; 20 } 21 printf("%s ",ans?"Yes":"No"); 22 return 0; 23 }