侧边栏壁纸
博主头像
Hope博主等级

努力赚钱的工科研究生

  • 累计撰写 362 篇文章
  • 累计创建 129 个标签
  • 累计收到 5 条评论
标签搜索

Acwing 145. 超市

Hope
2022-09-18 / 0 评论 / 0 点赞 / 536 阅读 / 638 字
温馨提示:
本文最后更新于 2022-09-18,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Acwing 145. 超市
思路:

维护一个小跟堆,里面存放的是价值。
有一点是比较难想到的,小跟堆的size即是天数,比如里面存的是天数为3,那么里面一定不会出现3个以上的天数为3的,所以,可以保证里面最坏的情况下,所有的物品都可以卖出去。
贪心策略是,维护最大的价值,所以使用小跟堆。

代码:

#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
typedef pair<int,int> PII;
const int N = 1e4+10;
PII arr[N];
int n;

int main(){
    while(cin >> n){
        priority_queue<int,vector<int>, greater<int>> q;
        for(int i = 0; i < n; i++){
            cin >> arr[i].second >> arr[i].first;
        }
        sort(arr, arr + n);
        for(int i = 0; i < n; i++){
            q.push(arr[i].second);
            if(q.size() > arr[i].first) q.pop();
        }
        int ans = 0;
        while(q.size()){
            ans += q.top();
            q.pop();
        }
        cout << ans << endl;
    }
    
    
    return 0;
}

0

评论区