传送门:https://vijos.org/d/jcsy/p/58b2b8bad3d8a123ab08db9f
这是一道贪心题,主要由2部分组成
1、首先最优情况必定是k张优惠券全部用完,那么先按优惠价排序,排出来前k个优惠价之和如果比m大,则从小到大按优惠价能买几个买几个,然后输出
2、然后考虑如果步骤1后前k个都买下并还有钱剩余,则可能可以再多买,

但是:

前k个必定不能扔掉:一旦某个被扔掉,则只能省下1张优惠券,这张优惠券用于新的物品要花的钱必定比留下那个扔掉的要多
所以要加入新的只有两种可能:
(1)从已有的取出一张优惠券用于加入新的物品(此时新的优惠价要最小,并且被取出优惠券的物品优惠价与原价之差要最小)
(2)用原价加入新的物品(此时新的原价要最小)
从(1)(2)中取较优状态用于加入
那么为了维护已加入物品优惠价与原价之差最小,可以用堆

以下代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;#define MAX 100000000000000007
#define LL long longpriority_queue< LL,vector<LL>,greater<LL> > h;
LL n,m,k,s,a_xb,b_xb,ans;
bool f[100005];struct price{LL x,y,z;bool operator <(const price &s)const{return y<s.y;}
}
a[100005],b[100005];bool cmp(struct price x,struct price y){return x.x<y.x;
}int main(){cin>>n>>m>>k;for (int i=1;i<=n;i++){cin>>a[i].x>>a[i].y;a[i].z=i;}sort(a+1,a+n+1);for (int i=1;i<=m;i++){if (s+a[i].y<=k){s+=a[i].y;h.push(a[i].x-a[i].y);}else{cout<<i-1;return 0;}}memcpy(b,a,sizeof b); sort(b+m+1,b+n+1,cmp);a_xb=m+1; b_xb=m+1;a[n+1].x=a[n+1].y=MAX; b[n+1].x=b[n+1].y=MAX;ans=m;while (a_xb<=n||b_xb<=n){if (a[a_xb].y+h.top()<b[b_xb].x){s+=a[a_xb].y+h.top();h.pop();h.push(a[a_xb].x-a[a_xb].y);f[a[a_xb].z]=1;}else{s+=b[b_xb].x;f[b[b_xb].z]=1;}if (s>k){cout<<ans;return 0;}else ans++;while (f[a[a_xb].z]&&a_xb<=n) a_xb++;while (f[b[b_xb].z]&&b_xb<=n) b_xb++;}cout<<ans;return 0;
}

【贪心】兔警官朱迪买礼物相关推荐

  1. 百度松果 买礼物(贪心)

    题目描述 小码哥谈恋爱了!但是他更喜欢玩派派,当他玩完派派时发现已经x点x分了,由于一直不回女朋友消息,女朋友现在的怒气值为mmm,为了赔偿女朋友,他要去给女朋友买礼物,每过一分钟女朋友的怒气值会上升 ...

  2. 程序员从来没给丈母娘买礼物,真相竟然令人沉默

    来源 :对影成三Great 同事A,程序员,今年三十左右,已婚,有一女儿,技术好,开发经验足,平时工作也很勤奋,来公司两年,头发逐渐秃顶. 一日闲聊,A和我们抱怨,快要过年了,要给丈母娘准备礼物了.丈 ...

  3. 洛谷P1194 买礼物

    洛谷P1194 买礼物 在买了第一次之后,你还要买 n-1次,把所有点都连起来,这样做一个最小生成树 就行了,然后要注意题目中说了如果a[ i ][ j ]==0 则表示两个点是不相连的,赋值 inf ...

  4. 洛谷——P1194 买礼物

    P1194 买礼物 题目描述 又到了一年一度的明明生日了,明明想要买B样东西,巧的是,这B样东西价格都是A元. 但是,商店老板说最近有促销活动,也就是: 如果你买了第I样东西,再买第J样,那么就可以只 ...

  5. 【二分】买礼物的艰辛

    买礼物的艰辛 题目大意: 有n个物品的价格,还有m个人,m个人中的每个人都要购买一定的连续物品,问买下n个物品,花钱最大的人最少花多少钱 原题: 题目描述 小X同学给小C同学选了N件礼物,决定顺序购买 ...

  6. 码蹄集第23周赛(买礼物,召唤神龙,大促销,轨道探测)

    买礼物 /** @Author: 晚乔最美 * @Date: 2022-11-05 15:03:46 * @Last Modified by: 晚乔最美 * @Last Modified time: ...

  7. zzuli 2126 tmk买礼物 思维题

    2126: tmk买礼物 Time Limit: 1 Sec  Memory Limit: 128 MB Description 明天是校赛的日子,为了庆祝这么喜庆的日子,TMK打算买些礼物给女票LS ...

  8. 2017广东工业大学程序设计竞赛决赛 Problem H: tmk买礼物(数论)

    tmk买礼物 Problem H: tmk买礼物 Description 今天是校赛的日子,为了庆祝这么喜庆的日子,TMK打算买些礼物给女票LSH庆祝一下. TMK进入了雪梨超市,然后刚踏入的一瞬间, ...

  9. 广东工业大学第12届ACM程序设计大赛 Problem H: tmk买礼物

    Problem H: tmk买礼物 Description 今天是校赛的日子,为了庆祝这么喜庆的日子,TMK打算买些礼物给女票LSH庆祝一下. TMK进入了雪梨超市,然后刚踏入的一瞬间,店主就对TMK ...

最新文章

  1. 大开源时代,“仁慈的独裁者”管理模式还走得通吗?
  2. FPGA之道(39)HDL的命名规则
  3. 初等数学O 集合论基础 第二节 映射与集合的势
  4. Sql Server 2008 精简版(Express)和管理工具的安装以及必须重新启动计算机才能安装 SQLServer的问题和第一次使用sqlexpress的连接问题
  5. Oracle创建简单视图案例
  6. OPA 4 - createButtonTest
  7. 七 内置锁 wait notify notifyall; 显示锁 ReentrantLock
  8. 前端学习(1971)vue之电商管理系统电商系统之完成参数的添加操作
  9. 第五十八期:从0到1 手把手教你建一个区块链
  10. np.unique( )--去除数组中的重复数字,并进行排序之后输出
  11. 摩拜APP、小程序停服 摩拜单车全面接入美团
  12. Phpstorm-php在线手册配置
  13. pip快速下载python包
  14. [车联网安全自学篇] Android安全之静态逆向APK应用浅析「手动注入smali」+「IDA Pro静态分析so文件」+「IDA Pro基础使用讲解」
  15. 新买的华为Matebook,Office没激活,激活方法在这里!!!
  16. 寒霜朋克计算机丢失,寒霜朋克无法启动运行解决方法 寒霜朋克不能运行怎么办?...
  17. 5G移动通信技术基本介绍(附92页PDF下载)
  18. GD32 汽车诊断协议J1850-PWM 测试
  19. iPhone在线音乐盒,代码开源
  20. 嵌入式linux之yocto(三)qemu

热门文章

  1. mysql主从配置duxi_Mysql主从同步配置
  2. iOS开发者程序许可协议
  3. 直播app代码公布:视频直播源码转盘功能的实现
  4. html+css新手入门:圆角的使用方法详情,常见工作场景;
  5. 为什么计算机不能进行十进制,计算机为什么用二进制而不是十进制?
  6. Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习
  7. opencv 数字识别详细教程
  8. JVM调优理论与实践最佳结合
  9. 技术干货| MindSpore新一代自主研发分子模拟库:Mind-Sponge
  10. tensorflow 学习笔记使用CNN做英文文本分类任务