P3045 [USACO12FEB] Cow Coupons G ( 反悔堆

这篇具有很好参考价值的文章主要介绍了P3045 [USACO12FEB] Cow Coupons G ( 反悔堆。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#include <bits/stdc++.h>
using namespace std;
using VI = vector<int>;
using ll = long long;
using PII = pair<int,int>;
const int mod = 19650827;
int n,k;
ll m;
int a[50010];
int b[50010];
int del[50010];

int main(){
    cin>>n>>k>>m;
    priority_queue<PII,vector<PII>,greater<PII>>p1,p2;
    priority_queue<int,vector<int>,greater<int>>p3;
    for(int i=1;i<=n;i++) {
        cin>>a[i]>>b[i];
        p1.push({a[i],i});
        p2.push({b[i],i});
    }

    for(int i=1;i<=k;i++) p3.push(0);
    ll res = 0;
    int ct = 0;
    while (ct < n){
        while(del[p1.top().second] == 1) p1.pop();
        while(del[p2.top().second] == 1) p2.pop();
        auto x = p1.top();
        auto y = p2.top();
        auto z = p3.top();
        if(x.first > y.first + z){
            del[y.second] = 1;
            p2.pop();
            int d = a[y.second] - b[y.second];
            p3.pop();
            p3.push(d);
            res += y.first + z;
        }else{
            del[x.second] = 1;
            p1.pop();
            res += x.first;
        }
        if(res > m){
            break;
        }else{
            ct++;
        }
    }

    cout<<ct;
}

利用差值来表示更换优惠卷的操作

比如你现在已经用了k张优惠卷,如果你想要用更换优惠卷,就用补差价,

如果补的差价+物品的优惠值 <= 直接再买一个(和前面的物品并不是同一个)  那就直接不用优惠卷买文章来源地址https://www.toymoban.com/news/detail-651132.html

到了这里,关于P3045 [USACO12FEB] Cow Coupons G ( 反悔堆的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • P2419 [USACO08JAN]Cow Contest S

    �(1≤�≤100)N(1≤N≤100) cows, conveniently numbered 1 �1 N , are participating in a programming contest. As we all know, some cows code better than others. Each cow has a certain constant skill rating that is unique among the competitors. The contest is conducted in several head-to-head rounds, each between two cows. If cow �A has a great

    2024年02月03日
    浏览(51)
  • 数据结构习题24/12/24

    这道题目可以考虑,如果前缀是一样的长度,那么只需要两个链表同时向后检索,直到找到一样的元素为止。所以应该先找到两个链表的长度,然后将较长的一个链表的多出来的前缀部分删掉,也就不去看这一部分。因为后缀都是一样的,所以长度的差异只可能来自前缀。

    2024年02月04日
    浏览(41)
  • 聊聊大数据框架的数据更新策略: COW,MOR,MOW

    大数据框架下,常用的数据更新策略有三种: COW: copy-on-write, 写时复制; MOR: merge-on-read, 读时合并; MOW: merge-on-write, 写时合并; hudi等数据湖仓框架,常用的是前两种实现数据更新。而Doris则主要用后两种更新数据。 在数据写入的时候,复制一份原来的拷贝,在其基础上添加新数据

    2024年02月05日
    浏览(28)
  • 12-数据结构-数组、矩阵、广义表

    目录 数组、矩阵、广义表   一、数组         二.矩阵 三、广义表         这一章节理解基本概念即可。数组要看清其实下标是多少,并且二维数组,存取数据,要先看清楚是按照行存还是按列存,按行则是正常一行一行的去读写,按列则是,从左至右,一列一列的弄。

    2024年02月13日
    浏览(36)
  • 聊聊大数据框架的数据更新解决方案: COW, MOR, MOW

    大数据框架下,常用的数据更新策略有三种: COW: copy-on-write, 写时复制; MOR: merge-on-read, 读时合并; MOW: merge-on-write, 写时合并; hudi等数据湖仓框架,常用的是前两种实现数据更新。而Doris则主要用后两种更新数据。 在数据写入的时候,复制一份原来的拷贝,在其基础上添加新数据

    2024年02月05日
    浏览(37)
  • 一起学数据结构(12)——归并排序的实现

    归并排序的大概原理如下图所示:         从图中可以看出,归并排序的整体思路就是把已给数组不断分成左右两个区间,当这个区间中的数据数量到达一定数值时,便返回去进行排序,整体的结构类似二叉树的结构,因此,对于归并排序同样可以利用递归进行实现。    

    2024年02月08日
    浏览(39)
  • 数据结构——lesson12排序之归并排序

    hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥 个人主页:大耳朵土土垚的博客 💥 所属专栏:数据结构学习笔记 、排序算法合集 💥对于数据结构顺序表、链表、堆以及排序有疑问的都可以在上面数据结构专栏和排序合集专栏进行

    2024年04月10日
    浏览(57)
  • Python课堂12——六大数据结构之集合

    Python中的数据结构马上就要结束了,今天我们来学习Python中六大数据结构的最后一部分集合,坚持就是胜利go! 集合是一种数据类型,用于存储一组唯一的元素。集合可以通过花括号 {} 来定义,元素之间使用逗号分隔。与列表和元组不同,集合中的元素是无序的,且不允许重

    2024年02月22日
    浏览(34)
  • 【数据结构】12 堆栈应用:表达式求值

    有一个常量表达式的中缀表达式为:5 + 6 / 2 - 3 * 4,其后缀形式表示为: 5 6 2 / + 3 4 × -。后缀表达式的特点是运算符位于两个预算数之后。其前缀表达式为: - + 5 / 6 2 × 3 4。 后缀表达式相比于中缀表达式的求值要容易很多。 从左到右扫描该表达式: (1)遇见运算数5 6 2时不

    2024年02月20日
    浏览(53)
  • 【LeetCode】数据结构题解(12)[用栈实现队列]

    所属专栏:玩转数据结构题型❤️ 🚀 博主首页:初阳785❤️ 🚀 代码托管:chuyang785❤️ 🚀 感谢大家的支持,您的点赞和关注是对我最大的支持!!!❤️ 🚀 博主也会更加的努力,创作出更优质的博文!!❤️ 🚀 关注我,关注我,关注我,重要的事情说三遍!!!!!

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包