POJ1456 Supermarket 题解】的更多相关文章

思维题. 关键在于如何想到用堆来维护贪心的策略. 首先肯定是卖出的利润越大的越好,但有可能当前这天选定了利润最大的很久才过期而利润第二大的第二天就过期,这时的策略就不优了. 所以我们必须动态改变策略,使整体最优. 先按过期时间排序,按顺序遍历,对于每一个商品,如果过期时间大于当前已决定要卖的商品的个数,那么这个东西就也要被卖出. 如果过期时间等于当前已决定要卖的商品的个数,那么这个商品是否要被卖出取决于利润是否大于已决定要卖的商品的最小利润,如果是那么决策显然会变得更优,替换掉最小的商品即可.…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ1456 题意概括  一家超市,要卖出N种物品(每种物品各一个),每种物品都有一个卖出截止日期Di(在该日期之前卖出可以获得收益,否则就无法卖出),且每种物品被卖出都有一个收益值Pi. 卖出每个物品需要耗时1天,且任一时刻只能卖出一个物品.给出这N种物品的Di和Pi,求最大收益值. 题解 堆的做法大概是第一感,闭着眼睛应该都可以想到. 堆的做法:倒着来,对于每一天,如果有产品在当天结束销售,那么把他们…
题目链接: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…
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,代表没有可选的日子了(想一想为什么).…
题目链接: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…
题目链接:http://poj.org/problem?id=1456 题目大意: 有N件商品,分别给出商品的价值和销售的最后期限,只要在最后日期之前销售处,就能得到相应的利润,并且销售该商品需要1天时间. 问销售的最大利润.   我开始的代码:(贪心策略有问题,因为我当时以为过期时间短的商品要优先卖掉,实际上不是这样的) #include <cstdio> #include <cstring> #include <algorithm> using namespace…
传送门 1.贪心 + 优先队列 按照时间排序从前往后 很简单不多说 ——代码 #include <queue> #include <cstdio> #include <iostream> #include <algorithm> #define N 10001 int n, t, ans; std::priority_queue <int, std::vector <int>, std::greater <int> > q…
题目链接 CF815C Karen and Supermarket 题解 只要在最大化数量的前提下,最小化花费就好了 这个数量枚举ok, dp[i][j][1/0]表示节点i的子树中买了j件商品 i 优惠了 / 没优惠 复杂度是n^2的 因为每次是新儿子节点的siz * 之前儿子几点的siz, 就相当于树上的节点两两匹配,这个匹配只会在lca处计算一次 代码 #include<cstdio> #include<cstring> #include<algorithm> #…
在这道题目我花费了很长的时间去理解,因为绕进了死圈子 例行检查我就不放了 关键处在于选择5 使用了realloc,却没有让结构体指针node-> description正确指回去 (11条消息) 攻防世界PWN之Supermarket题解_seaaseesa的博客-CSDN博客 这位师傅博客上面有对realloc的具体解析 这道题的思路就是,我们申请一个0x80的堆,然后通过选择5的realloc申请一个0x90的堆 ,申请后0x80的堆会被free掉,然后在申请一个0x20大小的堆,这里就形成…
题目链接:http://codeforces.com/contest/828/problem/C C. String Reconstruction time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Ivan had string s consisting of small English letters. However, hi…
Supermarket Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17634   Accepted: 7920 题目链接:http://poj.org/problem?id=1456 Description: A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a…
BUPT2017 wintertraining(16) #4 F POJ - 1456 题意 每个商品有过期日期和价格,每天可以卖一个商品,必须在过期前出售才能收益,求最大收益. 题解 贪心,按价格排序,再将它放在过期日期当天出售,若当天已经用了,就往前找可用的日子,若找到了还要标记这一天已用. 代码 #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> u…
题目的描述很长,其实描述的问题很简单,说有n的商品,它们每个的价值是pi,但是呢,再过di天这些商品就不能卖了(有可能过期了...),现在给出来每个商品的价值和可以卖的最后期限,问可以得到最多多少资金. 翻译出来这道题目后首先想到的就是线段树,因为线段树可以很好的处理在di天前面还剩多少天,然后找出来距离di最近的,不过这既然是并查集专题,就不得不使用并查集方法,想了很长时间终于想到,如果第di天被占有了那么让di的父节点保存他的前一个节点,然后使用的时候只要查找到一个等于本身的节点就好了,如果…
浅谈并查集:https://www.cnblogs.com/AKMer/p/10360090.html 题目传送门:http://poj.org/problem?id=1456 堆作法:https://www.cnblogs.com/AKMer/p/10287566.html 贪心的想,我们尽量先把利润高的商品安排了.假如把利润高的物品安排在第\(x\)天,显然比安排任何利润比他低的商品在第\(x\)天更优.这就保证了我们先卖利润高的物品的贪心正确性.另外,如果能尽量把安排的日子靠后就靠后,这样…
浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 题目传送门:http://poj.org/problem?id=1456 把物品按照时间排序,显然\(t\)天就只能卖\(t\)个物品. 所以我们把物品一个一个扔进堆里,当某天要卖的物品超过当前天数的时候一直把最小值从堆里弹出即可. 最后堆里剩下的元素就是要卖的元素. 时间复杂度:\(O(nlogn)\) 空间复杂度:\(O(n)\) 代码如下: #include <cstdio> #inclu…
题目链接: https://www.luogu.org/problemnew/show/UVA1316 思路: 根据题目意思,我们需要用到贪心的思想,越晚过期的商品当然是越晚卖好.同时你假如有多个商品必须在同一天卖出,当然是卖收益多的好. 于是我们就有以下方法:首先将每个商品的过期时间按从小到大排序,同时建立一个小根堆,然后遍历这些商品. 如果商品过期时间大于堆中商品个数,说明前面还有些天是没有卖东西的,当然可以把这个商品插入堆中. 类似的,如果商品过期时间等于堆中商品个数,就比较此商品的收益和…
On the way home, Karen decided to stop by the supermarket to buy some groceries. She needs to buy a lot of goods, but since she is a student her budget is still quite limited. In fact, she can only spend up to b dollars. The supermarket sells n goods…
题目链接:http://poj.org/problem?id=1456 Time Limit: 2000MS Memory Limit: 65536K 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 integral number of tim…
Supermarket 题目描述 有一个商店有许多批货,每一批货又有N(0<=N<=\(10^4\))个商品,同时每一样商品都有收益Pi​ ,和过期时间Di​ (1<=Pi,Di<=\(10^9\)),一旦超过了过期时间,商品就不能再卖. 你要做的就是求出每批货最多能得到多少收益. 输入输出格式 输入格式 多组数据,每组先给出一个整数N,表示这批货的商品个数. 然后有N对数,每对数有两个用空格隔开的正整数 Pi​,Di​ ,表示第i个商品的收益和过期时间.相邻两对数之间用空格隔开.…
做这套题之前一直以为并查集是很简单的数据结构. 做了才发现自己理解太不深刻.只看重片面的合并集合.. 重要的时发现每个集合的点与这个根的关系,这个关系可以做太多事情了. 题解: POJ 2236 Wireless Network 10S时限,尽量做到最优吧.一开始还怕会T 预处理出能到达的点.简单题看代码就行了 #include <map> #include <set> #include <list> #include <cmath> #include &l…
E. Karen and Supermarket time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output On the way home, Karen decided to stop by the supermarket to buy some groceries. She needs to buy a lot of goods, b…
这场cf有点意思,hack场,C题等于1的特判hack很多人(我hack成功3个人,上分了,哈哈哈,咳咳...) D题好像是树形dp,E题好像是中国剩余定理,F题好像还是dp,具体的不清楚,最近dp的题目好多,一会滚去学dp. 写A,B,C的题解. A. Supermarket   time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard outpu…
C. Karen and Supermarket     On the way home, Karen decided to stop by the supermarket to buy some groceries. She needs to buy a lot of goods, but since she is a student her budget is still quite limited. In fact, she can only spend up to b dollars.…
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我没看,看不懂. 基本思路:我不会. 参考代码:找Oyk老师和Czj老师去. B. The background of water problem 题目大意(大写加粗的水题):给定$N$个学生和他们$K$个科目的成绩$S_i$,再给出各科目$K_i$的权重顺序$Q_i$,求排名之后,拥有id为$X$的…