正题

jzoj题目链接:https://jzoj.net/senior/#main/show/5461


题目大意

有n个物品,m元,k个打折券。
每个物品打折前pip_ipi​元,打折后qiq_iqi​元,求最多能买多少物品。


解题思路

用可撤回贪心。
先将p和q分开排序,然后前k个都用打折劵。之和我们考虑一个新的东西如果必须打折的话,那么就相当于用pmini−qminip_{min\ i}-q_{min\ i}pmin i​−qmin i​元买一个打折卷,所以我们用堆用最大的进行比较买不买打折券好


code

#include<cstdio>
#include<algorithm>
#include<queue>
#define N 100010
using namespace std;
struct node{long long w,num;
}q[N],p[N];
long long n,k,m,ans;
priority_queue <int> K;
bool f[N];
bool cmp(node x,node y)
{return x.w<y.w;}
int main()
{scanf("%lld%lld%lld",&n,&k,&m);for(long long i=1;i<=n;i++){scanf("%lld%lld",&p[i].w,&q[i].w);p[i].num=q[i].num=i;}sort(p+1,p+1+n,cmp);sort(q+1,q+1+n,cmp);//分开排序long long j=1;for(long long i=1;i<=n;i++){if(k)//前k个全要{if(m>=q[i].w){m-=q[i].w;f[q[i].num]=true;K.push(q[i].w-p[q[i].num].w);ans++;k--;}}else{while(f[j]&&j<n)j++;//走到没有用过的if(m>=min(p[j].w,q[i].w-K.top()))//买的起{m-=min(p[j].w,q[i].w-K.top());if(p[j].w>q[i].w-K.top()){m-=q[i].w-K.top();K.pop();K.push(q[i].w-p[q[i].num].w);//压入堆}else j++;//下一个最小的ans++;//多买一个}}}printf("%lld",ans);
}

nssl1148,jzoj5461-购物【可撤回贪心,堆】相关推荐

  1. POJ - 1456 贪心 堆常用操作 注意细节

    题意:给定n个商品的deadline和profit,求每天卖一件的情况下的最大获利 显然是一道贪心 按deadline从小到大排序好,动态维护小根(profit)堆的大小<=当前deadline ...

  2. AT3957-[AGC023F]01 on Tree【贪心,堆】

    正题 题目链接:https://www.luogu.com.cn/problem/AT3957 题目大意 nnn个节点的一棵树,每个节点有0/10/10/1.每次删除一个根节点,然后把该节点的值填入序 ...

  3. P3620-[APIO/CTSC2007]数据备份【贪心,堆,链表】

    正题 题目链接:https://www.luogu.com.cn/problem/P3620 题目大意 一条线上有nnn个位置,选出kkk对使得它们的距离差之和最小. 解题思路 因为一定是连接相邻的最 ...

  4. ssl2331OJ1373-鱼塘钓鱼 之2【贪心堆优化】

    前言 上篇:纯贪心做法 下篇:dp做法 题目:OJ1373 正题 有N个鱼塘,给出每分钟可以钓到的鱼数和每钓一次下一次钓减少的鱼数和到下一个鱼塘需要几分钟(不能回头).求限定时间内最多能够钓到的鱼数 ...

  5. [APIO/CTSC 2007]数据备份(贪心+堆)

    你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣. ...

  6. 【BZOJ1826】【tyvj2644】缓存交换,贪心+堆维护

    传送门1 传送门2 写在前面:Shallwe回家养病依然努力刷题,实乃我辈楷模 思路:比较容易想到的贪心思路(虽然一开始我对这个思路有点虚,因为太弱不会证明,大体理解一下就好= =),用堆维护一下ne ...

  7. 【bzoj1572】[Usaco2009 Open]工作安排Job 贪心+堆

    题目描述 Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间. 他的工作日从0时刻开始,有1000000000个单位时间(!). ...

  8. 【贪心+堆/模拟费用流增广】BZOJ4946 [NOI2017]蔬菜

    一道思路很好的题,因为篇幅太长赶时间,以下多数转自这里 [题目] 定义了一种蔬菜为: a i , s i , c i , x i a_i,s_i,c_i,x_i ai​,si​,ci​,xi​,有 n ...

  9. BZOJ5102:[POI2018]Prawnicy(贪心,堆)

    Description 定义一个区间(l,r)的长度为r-l,空区间的长度为0. 给定数轴上n个区间,请选择其中恰好k个区间,使得交集的长度最大. Input 第一行包含两个正整数n,k(1<= ...

最新文章

  1. C++虚继承(一) --- vtordisp字段
  2. swift 拖动按钮_Swift下使用UICollectionView 实现长按拖拽功能
  3. sql语句Order by 报错列名不明确
  4. Mysql的关联查询语句
  5. Android 应用内实现导航页面,接入百度SDK内置导航,高德SDK内置导航
  6. c语言tmplink,为了便于阅读,偿试把BLHeli的汇编源程序改成C语言格式
  7. 作者:胡青青(1984-),女,现就职于中国人民银行征信中心数据部,主要研究方向为数据挖掘。...
  8. 仿 vue-cli 搭建属于自己的脚手架
  9. 自定义控件:属性为控件需要注意的地方
  10. 国际化的支持--多编码问题
  11. linux c 读txt文件内容,如何利用C/C++逐行读取txt文件中的字符串
  12. 微信小程序-detail详情页数据动态展示
  13. 正则匹配中文英文字符及标点
  14. 反问疑问句的一些用法
  15. 图像的空间分辨率和幅度分辨率
  16. k8s集群部署中etcd启动报错request sent was ignored (cluster ID mismatch: peer[c39bdec535db1fd5]=cdf818194e3a8c
  17. 前端 day 30 html 基础一
  18. android连接ios热点超时,Android19连接iOS13个人热点失败
  19. 计算机网页设计与制作论文,网页设计与制作论文
  20. rappid_JointJS_v3_5_0

热门文章

  1. java dos编译命令是什么_在DOS命令行状态下,如果源程序HelloWorld.java在当前目录下,那么编译该程序的命令是()...
  2. mysql修改主键生成策略信息_常用Hibernate 主键生成策略
  3. jax rs mysql_Jersey / JAX-RS ExceptionMapper MySQL
  4. Java当中Map的认识和基本用法
  5. IDEA如何在包下建立子包
  6. Java中各种整形类型可以表示的范围
  7. N的阶乘的长度 V2(斯特林近似) 51Nod - 1130
  8. 数据结构与算法--解决问题的方法- 二叉树的的镜像
  9. RNN循环神经网络概述
  10. 请求分页算法 Python实现