C++,codeforces 2057B

//codeforces 2057B
#include <iostream>
#include <utility>
#include <set>
#include <map>
#include <numeric>
struct cmp{
    bool operator()(const std::pair<int,int>& a,const std::pair<int,int>& b) const{
        return a.second<b.second || (a.second==b.second && a.first<b.first);
    }
};
void solve(){
    int n,k;
    std::cin>>n>>k;
    std::multiset<int> counts;
    {
        //统计频率
        std::map<int,int> m;//num  freq
        for(int i = 0;i<n;i++){
            int x;
            std::cin>>x;
            m[x]++;
        }
        //将频率放入set
        for(auto i:m){
            counts.insert(i.second);
        }
    }
    int maxCount = *counts.rbegin();
    while(k>0 && counts.size()>1){
        if(*counts.begin()<=k){
            maxCount+=*counts.begin();
            k-=*counts.begin();
            counts.erase(counts.begin());
        }else{
            k=0;
        }
    }
    int ans = counts.size();
    std::cout<<ans<<std::endl;
}
int main(){
    int t;
    std::cin >> t;
    while(t--){
        solve();
    }
}
posted @ 2025-03-07 20:27  Kazuma_124  阅读(6)  评论(0)    收藏  举报