1 条题解

  • 0
    @ 2025-11-23 21:53:41

    C++ :

    #include<iostream>
    #include<bits/stdc++.h>
    #include<algorithm>
    using namespace std;
    const int maxm=1001,maxn=maxm;
    long long n,m,p[maxn],c[maxm];
    long long cnt[maxn];
    vector<int> cs[maxn];
    long long ans=1e18;
    long long f(int ii){
    	long long curcnt=cnt[1],res=0;
    	vector<int> tmp;
    	for(int i=2;i<=n;i++){
    		int b=max((int)(cs[i].size()-ii+1),0);
    		for(int j=0;j<b;j++){
    			res+=cs[i][j];
    		}
    		curcnt+=b;
    		for(int j=b;j<cs[i].size();j++){
    			tmp.push_back(cs[i][j]);
    		}
    	}
    	sort(tmp.begin(),tmp.end());
    	for(int i=0;i<ii-curcnt;i++){
    		res+=tmp[i];
    	}
    	return res;
    }
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=m;i++){
    		cin>>p[i]>>c[i];
    		cnt[p[i]]++;
    		cs[p[i]].push_back(c[i]);
    	}
    	for(int i=1;i<=n;i++){
    		sort(cs[i].begin(),cs[i].end());
    	}
    	for(int i=max((long long)(cnt[1]),1ll);i<=m;i++){
    		ans=min(ans,f(i));
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    5647
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者