[POI2012]HUR-Warehouse Store(贪心,堆)
题意
n天。第i天上午会进货Ai件商品,中午的时候会有顾客需要购买Bi件商品,可以选择满足顾客的要求,或是无视掉他。
如果要满足顾客的需求,就必须要有足够的库存。问最多能够满足多少个顾客的需求。
(n<=250000)
题解
一看就知道是贪心。
我们把选择的每一天扔到一个堆里,按Bi从大到小排序。
每一天商品能买就买。买不了就查找堆顶元素,如果堆顶元素大于Bi则弹掉堆顶,把当前Bi扔进去(等于弹出来的那天没买,当前天买了)
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #include<queue> 7 using namespace std; 8 const long long N=300000; 9 struct Node{ 10 long long id,w; 11 bool operator <(const Node &a)const{ 12 return a.w>w; 13 } 14 }node; 15 priority_queue<Node> q; 16 long long n,a[N],b[N],tot,ans,tmp,c[N]; 17 bool cmp(long long x,long long y){ 18 return x<y; 19 } 20 int main(){ 21 scanf("%lld",&n); 22 for(long long i=1;i<=n;i++){ 23 scanf("%lld",&a[i]); 24 } 25 for(long long i=1;i<=n;i++){ 26 scanf("%lld",&b[i]); 27 } 28 for(long long i=1;i<=n;i++){ 29 tot+=a[i]; 30 if(b[i]<=tot){ 31 tot-=b[i]; 32 node.id=i; 33 node.w=b[i]; 34 q.push(node); 35 ans++; 36 } 37 else if(!q.empty()&&b[i]<q.top().w){ 38 node=q.top(); 39 q.pop(); 40 tot+=node.w; 41 tot-=b[i]; 42 node.id=i; 43 node.w=b[i]; 44 q.push(node); 45 } 46 } 47 printf("%lld\n",ans); 48 while(!q.empty()){ 49 c[++tmp]=q.top().id; 50 q.pop(); 51 } 52 sort(c+1,c+1+tmp,cmp); 53 for(long long i=1;i<=tmp;i++){ 54 printf("%lld ",c[i]); 55 } 56 return 0; 57 }
转载于:https://www.cnblogs.com/Xu-daxia/p/9436759.html
[POI2012]HUR-Warehouse Store(贪心,堆)相关推荐
- POJ - 1456 贪心 堆常用操作 注意细节
题意:给定n个商品的deadline和profit,求每天卖一件的情况下的最大获利 显然是一道贪心 按deadline从小到大排序好,动态维护小根(profit)堆的大小<=当前deadline ...
- AT3957-[AGC023F]01 on Tree【贪心,堆】
正题 题目链接:https://www.luogu.com.cn/problem/AT3957 题目大意 nnn个节点的一棵树,每个节点有0/10/10/1.每次删除一个根节点,然后把该节点的值填入序 ...
- P3620-[APIO/CTSC2007]数据备份【贪心,堆,链表】
正题 题目链接:https://www.luogu.com.cn/problem/P3620 题目大意 一条线上有nnn个位置,选出kkk对使得它们的距离差之和最小. 解题思路 因为一定是连接相邻的最 ...
- nssl1148,jzoj5461-购物【可撤回贪心,堆】
正题 jzoj题目链接:https://jzoj.net/senior/#main/show/5461 题目大意 有n个物品,m元,k个打折券. 每个物品打折前pip_ipi元,打折后qiq_iqi ...
- ssl2331OJ1373-鱼塘钓鱼 之2【贪心堆优化】
前言 上篇:纯贪心做法 下篇:dp做法 题目:OJ1373 正题 有N个鱼塘,给出每分钟可以钓到的鱼数和每钓一次下一次钓减少的鱼数和到下一个鱼塘需要几分钟(不能回头).求限定时间内最多能够钓到的鱼数 ...
- [APIO/CTSC 2007]数据备份(贪心+堆)
你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣. ...
- 【BZOJ1826】【tyvj2644】缓存交换,贪心+堆维护
传送门1 传送门2 写在前面:Shallwe回家养病依然努力刷题,实乃我辈楷模 思路:比较容易想到的贪心思路(虽然一开始我对这个思路有点虚,因为太弱不会证明,大体理解一下就好= =),用堆维护一下ne ...
- 【bzoj1572】[Usaco2009 Open]工作安排Job 贪心+堆
题目描述 Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间. 他的工作日从0时刻开始,有1000000000个单位时间(!). ...
- 【贪心+堆/模拟费用流增广】BZOJ4946 [NOI2017]蔬菜
一道思路很好的题,因为篇幅太长赶时间,以下多数转自这里 [题目] 定义了一种蔬菜为: a i , s i , c i , x i a_i,s_i,c_i,x_i ai,si,ci,xi,有 n ...
- BZOJ5102:[POI2018]Prawnicy(贪心,堆)
Description 定义一个区间(l,r)的长度为r-l,空区间的长度为0. 给定数轴上n个区间,请选择其中恰好k个区间,使得交集的长度最大. Input 第一行包含两个正整数n,k(1<= ...
最新文章
- 下载到FPGA内的文件格式
- python画三维几何图-Python常见几何图形绘制
- 多线程(三)之ReentrantLock源码解析
- HTML5 API详解(13):video/audio 视频/音频
- .net pdf转图片_在客户端实现PDF转图片
- 【09】Jenkins:Pipeline 补充
- TypeError: Layout of the output array image is incompatible with cv::Mat
- tomcat老启动不起来问题
- day 34 进程线程排序 抢票 初级生产者消费者
- matlab传热模拟计算,MATLAB生物化工计算与模拟
- QMS-云质-质量管理软件-企业数字化质量管理解决方案
- 使oracle支持dbo,Oracle.ManagedDataAccess.EntityFramework – ORA-01918:用户’dbo’不存在
- Gluster (一)安装
- 小内存堆管理算法详细解析
- 主合同与补充合同的区别有哪些?
- Python——标准库函数
- windows代理软件对比
- 漫谈机器学习经典算法—增强学习与马尔科夫决策过程
- Weex和Web开发体验的异同
- 电子表格计算机课时费,如何用EXCEL设置教师课时费报表
热门文章
- 关于STAR法则简历
- 蓝桥杯_练一练「鲁卡斯队列」 java
- python中的计数函数_NumPy的搜索和计数函数
- Redis统计用户访问量
- centos6 yum源失效解决方法
- word制作多个单位联合发文的文件头
- python数据按照分组进行频率分布_3.2.1 分布分析
- 网络是怎样连接的?从浏览器输入URL开始
- 厨神之路五--粥汤类
- 启动docker-compose时报/usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarnin