Dashboard - Codeforces Round 941 (Div. 2) - Codeforces
A. Card Exchange
既然只看数量,咱也别统计是谁了,就看能不能变了。
首先先明确,如果现在都一样比如n个,可以一直操作直到 k-1。
我们可以先根据数量用map统计,然后放在vector后按数目排序,别管是谁了。
从大到小先一直变,像“招募”一样,每个位置,损失一个,然后全部招募下来,
直到不能招募,把总招募的压缩为k-1即可。
参考代码:
#define ll long long
#define endl "\n"
#define PII pair<int,int>
#define int long long
const int maxn = 1e5 + 5;
void solve()
{
map<int, int>mm;
int n, k;
cin >> n >> k;
int other = 0;
int ret = 0;
for (int i = 0; i < n; i++)
{
int tmp;
cin >> tmp;
mm[tmp]++;
if (mm[tmp] == k)
{
mm[tmp] = 0;
other += k - 1;
}
}
vector<int>arr;
for (auto [a, b] : mm)
arr.emplace_back(b);
sort(arr.begin(), arr.end(),less<int>