| 题目链接 | 难度等级 | 完成状态 | 完成分数 | 最后编辑时间 | 需要注意 |
|---|---|---|---|---|---|
| 地鼠游戏 | ★☆☆☆☆ | 答案正确 | 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;
}
|