您的位置:首页 > 其它

NYIST 1107 最高的奖励

2014-10-25 14:53 176 查看

最高的奖励

时间限制:1000 ms | 内存限制:65535 KB
难度:3

描述
请问:挖掘机技术哪家强?AC了告诉你!

给你N(N<=3*10^4)个任务,每个任务有一个截止完成时间t(1=<t<=10^9)和完成该任务的奖励v(1=<v<=10^9),每个任务要花一天完成,问最多能获得多少奖励?

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <climits>
#include <vector>
#include <queue>
#include <cstdlib>
#include <string>
#include <set>
#include <stack>
#define LL long long
#define INF 0x3f3f3f3f
#define pii pair<int,int>
using namespace std;
const int maxn = 100000;
pii d[maxn];
int main(){
int n,u,v;
priority_queue< pii,vector< pii >,greater< pii > > q;
while(~scanf("%d",&n)){
LL ans = 0;
while(!q.empty()) q.pop();
for(int i = 0; i < n; ++i)
scanf("%d %d",&d[i].first,&d[i].second);
sort(d,d+n);
for(int i = 0; i < n; ++i){
if(q.size() < d[i].first){
ans += d[i].second;
q.push(make_pair(d[i].second,d[i].first));
}else if(q.size() == d[i].first){
if(d[i].second > q.top().first){
ans += d[i].second - q.top().first;
q.pop();
q.push(make_pair(d[i].second,d[i].first));
}
}
}
printf("%lld\n",ans);
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: