题解 | #1012.Equalize the Array# 2023杭电暑期多校10
1012.Equalize the Array
签到
题目大意
定义一个数组的 m o d e mode mode 是其中出现次数最多的数字(可不唯一)
给定一个数组 a a a ,每次操作可以选定其一个 m o d e mode mode 并使数组中所有与之相等的元素 + 1 +1 +1
问任意次操作后能否使数组中全部元素相等
解题思路
如果数组中最小的元素是 m o d e mode mode ,连续操作最小元素即可实现//
元素计数,判断最小元素出现次数是否最多即可
时间复杂度
O ( n log n ) O(n\log n) O(nlogn)
参考代码
参考代码为已AC代码主干,其中部分功能需读者自行实现
void solve()
{ll n;cin >> n;map<ll,ll> mp;ll t;FORLL(i,1,n){cin >> t;mp[t]++;}ll mxcnt=0,mxi=0,mn=0;FORLL(i,1,n){t=mp[i];if(!mn&&t) mn=i;if(t>mxcnt) {mxcnt=t;mxi=i;}}if(mxi<=mn) cout << YES;else cout << NO;
}