摘要

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

著作权声明[编辑]

关于[编辑]