poj1456 Supermarket】的更多相关文章

欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ1456 题意概括  一家超市,要卖出N种物品(每种物品各一个),每种物品都有一个卖出截止日期Di(在该日期之前卖出可以获得收益,否则就无法卖出),且每种物品被卖出都有一个收益值Pi. 卖出每个物品需要耗时1天,且任一时刻只能卖出一个物品.给出这N种物品的Di和Pi,求最大收益值. 题解 堆的做法大概是第一感,闭着眼睛应该都可以想到. 堆的做法:倒着来,对于每一天,如果有产品在当天结束销售,那么把他们…
Supermarket Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10725 Accepted: 4688 Description 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 integr…
Supermarket Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14656   Accepted: 6656 Description 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 in…
题目传送门 Supermarket Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15192   Accepted: 6855 Description 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…
1.Supermarket(题目地址) 跟很久以前模拟的打地鼠那题一样,贪心+优先队列.这次换用并查集做法. 还是基于贪心,但这次换一种策略,先选价值最大的, 同时使其尽可能晚的被选上(因为早选会将之前可选的日子占用,很显然). 将并查集f[i]表示从第i天往前看最晚的空下来的一天. 初始时还是每个点(即每天)指向自己,选物品时从这天开始找father,即之前我们维护的东西. 找到后将祖先指向上一个集合中(可以脑袋里面想象一下),累计答案. 如果祖先为0,代表没有可选的日子了(想一想为什么).…
题目链接:http://poj.org/problem?id=1456 Supermarket Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13736   Accepted: 6206 Description A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a d…
题目链接:https://cn.vjudge.net/problem/POJ-1456 此题与HDU-1789完全是一道题 题意 有N件商品,分别给出商品的价值和销售的最后期限,只要在最后日期之前销售处,就能得到相应的利润,并且销售该商品需要1天时间. 问销售的最大利润. 思路 详见HDU-1789 代码 注意题中n可为0 #include <cstdio> #include <algorithm> using namespace std; struct Product{ int…
贪心策略:一定先卖价值最大的,然后考虑卖当前的物品,卖的日期越靠后,越优,可以为以后的物品提供机会 #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; ; struct Node{ int v,d; bool operator<(const Node &rhs)const{ return v>rhs.v; } }p[N]; bool vis[…
题目链接:http://poj.org/problem?id=1456 题意:有n个物品(0 <= n <= 10000) ,每个物品有一个价格pi和一个保质期di (1 <= pi <= 10000, 1 <= di <= 10000),物品必须在保质期之前卖出.且每天只能卖出一个物品,问如何安排才能使卖出的总价格最大. 这道题贪心的思想很明显,先将物品的价格按照从大到小排序,再按照该顺序卖物品,如果存在不超过保质期的最大可用日期,则该物品能够卖出,并将这一天标记.关…
书上用的方法是正着按照天数推,如果任务大于小根堆顶就替换,天数多于任务就加. 而我依稀记得以前洛谷上有一题也是这个,用时光倒流来求解,天数倒推,加任务,取大根堆顶即可. 我的代码实现: #include <cstdio> #include <queue> #include <algorithm> ; /// poj 1456 struct A { int val, time; bool operator < (const A &x) const { ret…