题目链接 | 难度等级 | 完成状态 | 完成分数 | 最后编辑时间 | 需要注意 |
---|---|---|---|---|---|
地鼠游戏 | ★☆☆☆☆ | 答案正确 | 100 | 2015-7-19 16:59:43 | 无 |
1052.cpp代码已折叠
展开折叠内容
|
---|
#include<cstdio> #include<algorithm> #include<iostream> #include<set> #include<queue> using namespace std; #define time first #define val second pair<int,int> a[10000]={}; priority_queue<pair<int,int>>u;//默认大根堆// int n; int main(){ cin>>n; for(int i=1;i<=n;++i) cin>>a[i].time; for(int i=1;i<=n;++i) cin>>a[i].second; sort(a+1,a+n+1); int ans=0; for(int t=a[n].time,qi=n;t>=1;--t)//t从后往前枚举每一个时间// { while(a[qi].time==t){ u.push(make_pair(a[qi].val,a[qi].time));//地鼠消失之前,扔到堆里// --qi; } if(!u.empty()) { ans+=u.top().first;//每次取价值最高的// u.pop(); } } cout<<ans<<endl; } |