1 solutions
-
2
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; typedef pair<int,int> PII; #define g first #define d second PII cow[N]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>cow[i].g>>cow[i].d; } sort(cow+1,cow+n+1,[](PII a,PII b){ return a.d<b.d; }); priority_queue<int,vector<int>,greater<int>> q; int total=0; for(int i=1;i<=n;i++) { if(q.size()<cow[i].d) //可以直接轩 { q.push(cow[i].g); total+=cow[i].g; } else if(q.size()&&q.top()<cow[i].g) { //时间已满,但是当前奶牛的产量比最小的小 total-=q.top(); q.pop();//返回 q.push(cow[i].g); //选择新的奶牛 total+=cow[i].g; } } cout<<total; return 0; }
Information
- ID
- 3055
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- (None)
- # Submissions
- 11
- Accepted
- 4
- Uploaded By