题目链接
题记:先将奶牛的挤奶量从大到小排序,优先挤奶量多的奶牛,之后从每头奶牛挤奶的截止时间往前遍历,选出一个能让这头牛挤奶的时间,标记这个时间,如果没有一个时间可以挤这头牛的奶则放弃这头牛。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
struct coww{
int g;
int d;
};
coww cow[N];
int cmp(coww a,coww b){
return a.g>b.g;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>cow[i].g;
cin>>cow[i].d;
}
sort(cow,cow+n,cmp);
int ans=0;
for(int i=0;i<n;i++){
for(int j=cow[i].d;j>0;j--){
if(!a[j]){
a[j]=1;
ans+=cow[i].g;
break;
}
}
}
cout<<ans<<endl;
return 0;
}