1 条题解
-
0
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
- 上传者