文章目录

  • 本题思路
  • 题目链接

本题思路

题目重述:给定n件商品的利润和过期时间,每天只能卖1件,问最大利润是多少。

题目思路:
贪心。 需要按照过期时间从早到晚排序。如果过期时间是3天的商品有≤3件商品卖掉是没问题的;问题出在过期时间是m天,结果商品有>m件(heap.size()>p.first),这时候需要舍弃一些商品,贪心策略是每次舍弃利润最低的商品
维护一个vector< pair<int,int>> vec,vec里面第一关键字存过期时间,第二关键字存利润;和一个小根堆heap,heap里面存的是商品的利润。

过程:
先排序,后插入到小根堆,最后便利小根堆得到利润之和即可。

ac代码

#include<bits/stdc++.h>
using namespace std;int n;
typedef pair<int,int> PII;int main(){while(cin>>n){int res=0;vector<PII> vec(n);priority_queue<int,vector<int>,greater<int>>heap; //小根堆for(int i=0;i<n;i++) cin>>vec[i].second>>vec[i].first; //first是过期时间sort(vec.begin(),vec.end());//默认按照第一关键字排序,从小到大//按照过期时间从小到大排序//遍历vecfor(auto p:vec){heap.push(p.second); //利润放进来if(heap.size()>p.first){ //今天到期的物品超过限度heap.pop();}}while(heap.size()){res+=heap.top();heap.pop();}cout<<res<<endl;}}

题目链接

145. 超市

超市里有N件商品,每件商品都有利润pi和过期时间di,每天只能卖一件商品,过期商品不能再卖。

求合理安排每天卖的商品的情况下,可以得到的最大收益是多少。

输入格式
输入包含多组测试用例。

每组测试用例,以输入整数N开始,接下来输入N对pi和di,分别代表第i件商品的利润和过期时间。

在输入中,数据之间可以自由穿插任意个空格或空行,输入至文件结尾时终止输入,保证数据正确。

输出格式
对于每组产品,输出一个该组的最大收益值。

每个结果占一行。

数据范围
0≤N≤10000,
1≤pi,di≤10000
最多有14组测试样例

输入样例:
4 50 2 10 1 20 2 30 1

7 20 1 2 1 10 3 100 2 8 2
5 20 50 10
输出样例:
80
185

Acwing145. 超市[C++题解]:贪心相关推荐

  1. ACM题解——贪心专题——木头加工

    ACM题解--贪心之木头加工 题目描述 There is a pile of n wooden sticks. The length and weight of each stick are know ...

  2. PAT甲级1125 Chain the Ropes:[C++题解]贪心、优先队列、合并果子

    文章目录 题目分析 题目来源 题目分析 来源:acwing 板子题:合并果子合并果子优先队列 分析:贪心策略是: 每次取最短的两条绳子a和b.该两条绳子合并为1条绳子,且长度变为a+b2\frac{a ...

  3. PAT甲级1038 Recover the Smallest Number (30 分):[C++题解]贪心、排列成最小的数、字符串

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 贪心: 对于字符串a和b,如果 a+b < b+a (这里+代表字符串中的连接)代表字典序更小.举例 a = 321 , b ...

  4. PAT甲级1037 Magic Coupon:[C++题解]贪心

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 贪心. 两个数列分别从大到小排列.从前往后遍历,如果a数组和b数组前k个数都是正数,就相乘累加到res中: 从后往前遍历,如果a数组 ...

  5. leetcode题解——贪心

    文章目录 738. 单调递增的数字 435. 无重叠区间(活动调度问题) 134. 加油站 738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个 ...

  6. leetcode 贪心_leetcode题解(贪心算法)

    定义 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择. 也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解. 通常贪心算法的代码会非常短而且思路也非常 ...

  7. USACO 2021 January Contest, BronzeProblem 3. Just Stalling题解 贪心 排序

    已经鸽了好久了写一篇题解把 题目描述 Farmer John 有N头奶牛(1≤N≤20),高度为a1-aN.他的牛栏有N个牛棚,高度限制分别为b1-bN(例如,如果b5=17,那么一头高度不超过17的 ...

  8. PAT甲级1029 Median:[C++题解]贪心、二路归并

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 如果直接排序,时间复杂度是O(nlogn),n=2∗105O(nlogn),\ n=2*10^5O(nlogn), n=2∗105会 ...

  9. PAT甲级1113 Integer Set Partition:[C++题解]贪心

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 集合元素个数之差为0或1.两个集合元素之和,分别取最大的n1个数,和剩下的所有的数. ac代码 #include<bits/s ...

最新文章

  1. 豆瓣评分 8.6,近 5 万读者学习的 Android 经典最新版出版,承载无数程序员的回忆......
  2. 怎么提高大表和小表的连接查询效率?
  3. for循环java_java的这三种for循环有什么区别?
  4. (37)0环与3环通信常规方式,PspTerminateProcess 关闭进程工具
  5. 通俗理解tcp/ip的三次握手和四次分手
  6. 解决Java版CKFinder无法显示缩略图问题
  7. 通过视觉直观感受7种常用的排序算法
  8. react fiber_让我们爱上React Fiber
  9. linux内核启动文件系统,Linux启动过程中文件系统的加载
  10. 烧写树莓派系统,SSH配置,无屏登录流程
  11. 【Remoting-4】
  12. Web前端程序员简历模板
  13. 【大数据处理技术】实验7(推荐林子雨老师的教程)
  14. word转pdf转换器11.0注册码
  15. 浏览器如何知道是哪个html,判断URL请求是从WML浏览器来的还是HTML浏览器来的
  16. 个人网站与个人博客的区别
  17. 如何在Excel 2013中使用公式编辑器
  18. openwrt - iperf3 内网测速
  19. Genymotion目前速度最快的Android模拟器+ova包
  20. 用Python处理Excel的14个常用操作

热门文章

  1. (笔记)Mysql命令grant on:增加新用户并控制其权限
  2. 键盘-App监听软键盘按键的三种方式
  3. viewDidLoad, viewWillDisappear, viewWillAppear等区别及各自的加载顺序
  4. .NET智能客户端(SmartClient)
  5. 离2006年考研还有一个月
  6. python顺序表代码_python实现顺序表的简单代码
  7. python计算n的32次方_获得用户输入的一个整数N,计算并输出N的32次方。_学小易找答案...
  8. 2.2 清除标注错误的数据-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  9. STM32 基础系列教程 48 – CJSON
  10. gitHub创建 repository仓库 并推送本地代码到该仓库