题干:

A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral number of time units starting from the moment the sale begins. Each product takes precisely one unit of time for being sold. A selling schedule is an ordered subset of products Sell ≤ Prod such that the selling of each product x∈Sell, according to the ordering of Sell, completes before the deadline dx or just when dx expires. The profit of the selling schedule is Profit(Sell)=Σ x∈Sellpx. An optimal selling schedule is a schedule with a maximum profit. 
For example, consider the products Prod={a,b,c,d} with (pa,da)=(50,2), (pb,db)=(10,1), (pc,dc)=(20,2), and (pd,dd)=(30,1). The possible selling schedules are listed in table 1. For instance, the schedule Sell={d,a} shows that the selling of product d starts at time 0 and ends at time 1, while the selling of product a starts at time 1 and ends at time 2. Each of these products is sold by its deadline. Sell is the optimal schedule and its profit is 80.

Write a program that reads sets of products from an input text file and computes the profit of an optimal selling schedule for each set of products.

Input

A set of products starts with an integer 0 <= n <= 10000, which is the number of products in the set, and continues with n pairs pi di of integers, 1 <= pi <= 10000 and 1 <= di <= 10000, that designate the profit and the selling deadline of the i-th product. White spaces can occur freely in input. Input data terminate with an end of file and are guaranteed correct.

Output

For each set of products, the program prints on the standard output the profit of an optimal selling schedule for the set. Each result is printed from the beginning of a separate line.

Sample Input

4  50 2  10 1   20 2   30 17  20 1   2 1   10 3  100 2   8 25 20  50 10

Sample Output

80
185

Hint

The sample input contains two product sets. The first set encodes the products from table 1. The second set is for 7 products. The profit of an optimal schedule for these products is 185.

题目大意:

超市里有N个商品. 第i个商品必须在保质期(第di天)之前卖掉, 若卖掉可让超市获得pi的利润. 
每天只能卖一个商品.
现在你要让超市获得最大的利润。

解题报告:

优先队列就行了,考虑成每一个cur天的决策,如果这一天还不到截止日期,那就直接push,并且把cur++。如果到了截止日期,那就只能看看需不需要更新pq中的元素,最后元素的个数一定就是答案。这题还有并查集做法:【51Nod - 1163】最高的奖励,按权值排序,遍历来找到可以最早安放的日期。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#include<bitset>
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> pii;
const int MAX = 2e5 + 5;
int n;
pii p[MAX];
int main()
{while(~scanf("%d",&n)) {for(int i = 1; i<=n; i++) cin>>p[i].second>>p[i].first;sort(p+1,p+n+1);priority_queue<int,vector<int>,greater<int> > pq;int cur = 1;for(int i = 1; i<=n; i++) {if(cur <= p[i].first) {pq.push(p[i].second);cur++;}else {if(p[i].second > pq.top()) pq.pop(),pq.push(p[i].second);}} int ans = 0;while(!pq.empty()) ans += pq.top(),pq.pop();printf("%d\n",ans);}return 0 ;
}

【POJ - 1456】Supermarket (贪心,优先队列 或并查集)相关推荐

  1. 【贪心】 POJ 1456 Supermarket 详解 (并查集/二叉堆优化)

    题目链接:POJ-1456 题目大意 有n件商品,每件商品的利润为,销售日期的截止时间为(即只能在时间前销售该物品).一天只能销售一件物品.问这n件商品的最大利润为多少 方案一 分析 有两种贪心策略, ...

  2. poj 1456 Supermarket (贪心, 并查集)

    链接: http://poj.org/problem?id=1456 题目: Description A supermarket has a set Prod of products on sale. ...

  3. poj 1456 Supermarket 贪心+并查集(个人感觉有点难判断出来

    poj 1456 这第一眼还觉得只要贪心就可以了,但是emmm看了大佬的题解居然真的要用到并查集= = 大佬清晰的思路 大佬舒服的代码 #pragma warning(disable:4996) #i ...

  4. POJ 1703 Find them, Catch them(并查集高级应用)

    POJ 1703 Find them, Catch them(并查集高级应用) 手动博客搬家:本文发表于20170805 21:25:49, 原地址https://blog.csdn.net/sunc ...

  5. POJ 1417 True Liars(路径压缩并查集+DP背包问题)

    POJ 1417 True Liars(路径压缩并查集+DP背包问题) http://poj.org/problem?id=1417 题意: 给出p1+p2个人,其中p1个是好人,p2个是坏人.然后有 ...

  6. POJ - 2513 Colored Sticks(字典树+并查集+欧拉回路)

    题目链接:点击查看 题目大意:给出n个木棍,问若两两相连,最终能否构成一根长直木棍,相连的规则是两个木棍的相接端点的颜色需要保持相同 题目分析:关于这个题目,我们可以将每个木棍视为一条边,每个木棍的两 ...

  7. 【杭电多校2020】Total Eclipse【贪心】【并查集】

    题意:nnn个点mmm条边的无向图,每个点有一个正点权,每次选择一个连通子图,将里面的权值都减111.求所有点权为000的最小步数. T≤10,n≤105,m≤2×105T\leq 10,n\leq ...

  8. POJ 3694 (tarjan缩点+LCA+并查集)

    好久没写过这么长的代码了,题解东哥讲了那么多,并查集优化还是很厉害的,赶快做做前几天碰到的相似的题. 1 #include <iostream> 2 #include <algori ...

  9. POJ 3694 Network ★(边双连通分量+并查集缩点+LCA)

    [题意]一个无向图可以有重边,下面q个操作,每次在两个点间连接一条有向边,每次连接后整个无向图还剩下多少桥(每次回答是在上一次连边的基础之上) [分析]好题,做完后涨了很多姿势~ 普通做法当然就是每加 ...

最新文章

  1. Cubieboard的第一辆小车[机器人的第一步]
  2. pagefooter如何不占位置_小卫生间如何装修?照着小浴室装修效果图这样装
  3. 关于Vmware ESX 4.1添加第二个Servier Console 却无法添加网关的解决方法
  4. 数据库软件架构,到底要设计些什么?
  5. 循环序列模型 —— 1.7 对新序列采样
  6. Ruby中的Profiling工具
  7. 如何在python导入包_python如何引入包
  8. zabbix 监控mongodb
  9. linux ftp 实例
  10. 记录一次归档日志爆满事件
  11. 《Go语言实战》学习笔记——包
  12. [iOS]Mac系统下安装windows共享打印机采坑记
  13. 计算机考研408复习路线,不再让你头大啦
  14. python编的俄罗斯方块游戏_Python编写俄罗斯方块小游戏
  15. Markdown语法-表格内换行
  16. 程序员未来职业规划分析
  17. opencv图像全景拼接
  18. [面试经验]一汽大众旗下车联网公司摩斯智联面试记
  19. 听课感悟——信息与信息特征
  20. 如何下载Hugging Face 模型(pytorch_model.bin, config.json, vocab.txt)以及如何在local使用

热门文章

  1. 安装包卸载时如何删除安装时写在系统环境变量中的内容
  2. 国外好的软件测试网站
  3. (ZT)在日本市场推广 iPhone 应用的经验
  4. WCF从理论到实践(14):WCF解决方案模板 (转)
  5. 链表中删除选定结点的优雅操作!
  6. OpenCV函数cvFindContours
  7. string的反转输出以及char型字符串的反转输出
  8. 7-13 部落 (25 分)
  9. gb50243-2016通风与空调工程施工质量验收规范_07K304 空调机房设计与安装
  10. Logistic Regression:最基础的神经网络