【BZOJ4946】[NOI2017]蔬菜(贪心)】的更多相关文章

题目链接 bzoj4946: [Noi2017]蔬菜 题解 挺神的贪心 把第次买的蔬菜拆出来,记下每种蔬菜到期的日期,填第一单位蔬菜比其他的要晚 按价格排序后,贪心的往前面可以填的位置填就可以了.找可以填的位置用并查集维护一下.这样就求出了最大天数的答案. 对于询问的答案,从最后一天往前推,把最便宜的那些丢掉就好了. 代码 #include<cstdio> #include<cstring> #include<algorithm> #define gc getchar…
题目链接: [Noi2017]蔬菜 题目大意:有$n$种蔬菜,每种蔬菜有$c_{i}$个,每种蔬菜每天有$x_{i}$个单位会坏掉(准确来说每天每种蔬菜坏掉的量是$x_{i}-$当天这种蔬菜卖出量),每卖出一个单位的蔬菜获得收益为$a_{i}$,第一次卖出一种蔬菜会得到$s_{i}$的额外收益,限制每天最多卖出$m$个单位的蔬菜,有$k$次询问,每次询问卖$p_{i}$天的最大收益. 因为每种蔬菜坏掉的部分是固定的,那么我们可以将每种蔬菜分成$\frac{c_{i}-1}{x_{i}}+1$类,…
题面: [NOI2017]蔬菜 题解: 首先每天蔬菜会变质这点并不好处理,我们考虑让时间倒流,从后向前处理,这样的话就相当于每天都会得到一定量的蔬菜. 这样做有什么好处呢? 我们可以发现一个性质:如果从后向前贪心卖菜,那么因为现在可以卖的菜,以后一定还可以卖(因为变成了得到菜),因此贪心就是对的了. 因此我们用堆维护一下,从后向前贪心的卖菜,每次优先卖价格高的,第一次卖的菜价格要加上奖励的贡献,并且只能先卖一个,因为卖完这一个之后的同种菜没有奖励了,相当于贡献有变化. 这样向前一直贪到第一天,于…
容易想到一个费用流做法:将每种蔬菜拆成p种,对应p个过期时间,每一种向可以卖的时间连边,第一次卖的奖励算在最晚过期的一种里.对于天数动态加点.不过这样边数太多了,因为第i天能卖的第i-1天一定能卖,可以改成每一种只向过期时间连边然后第i天向第i-1天连边.这样就有60分了.但费用流没有什么优化空间了. 如果蔬菜不会过期的话,贪心做法非常显然.那么,考虑让时光倒流.这样蔬菜只会每天增加,每次贪心的选出价值最大的行了.对于奖励,拆成两种蔬菜就好. 考虑对于单次询问具体应该怎么做.用一个大根堆维护应该…
题目描述 小 N 是蔬菜仓库的管理员,负责设计蔬菜的销售方案. 在蔬菜仓库中,共存放有nn 种蔬菜,小NN 需要根据不同蔬菜的特性,综合考虑各方面因素,设计合理的销售方案,以获得最多的收益. 在计算销售蔬菜的收益时,每销售一个单位第ii 种蔬菜,就可以获得a_iai​ 的收益. 特别地,由于政策鼓励商家进行多样化销售,第一次销售第 i 种蔬菜时,还会额外得到s_isi​ 的额外收益. 在经营开始时,第ii 种蔬菜的库存为c_ici​ 个单位. 然而,蔬菜的保鲜时间非常有限,一旦变质就不能进行销售…
小 N 是蔬菜仓库的管理员,负责设计蔬菜的销售方案. 在蔬菜仓库中,共存放有 n 种蔬菜,小 N 需要根据不同蔬菜的特性,综合考虑各 方面因素,设计合理的销售方案,以获得最多的收益. 在计算销售蔬菜的收益时,每销售一个单位第 i 种蔬菜,就可以获得 ai 的收益. 特别地,由于政策鼓励商家进行多样化销售,第一次销售第 i 种蔬菜时,还会额外 得到 si 的额外收益. 在经营开始时,第 i 种蔬菜的库存为 ci 个单位. 然而,蔬菜的保鲜时间非常有限,一旦变质就不能进行销售,不过聪明的小 N 已…
题目链接 因为有删除,考虑倒序处理某个p的询问. 那么每天删除xi的蔬菜就变成了每天运来xi的蔬菜.那么我们取当前最优的即可,早取晚取都一样,不需要留给后面取,还能给后面更优的留出空间. 这样就只需考虑现在了.于是我们能得到p为某个值的答案.多次询问显然需要递推. 而p-1与p相比只是少卖了m的蔬菜.把收益最小的m个删掉即可. 注意堆的插入删除顺序. 复杂度\(O(mqlogn)\). 还有一种求询问p的方法,是直接按蔬菜价值排序,然后每次找到其出现位置往前覆盖.如果某天已卖m则用并查集合并掉.…
[BZOJ4946][NOI2017]蔬菜(贪心) 题面 BZOJ 洛谷 UOJ 题解 忽然发现今年\(NOI\)之前的时候切往年\(NOI\)的题目,就\(2017\)年的根本不知道怎么下手(一定是我太菜了) 这题是一道神仙题(下定义),然而部分分多得不得了,不知道写一个费用流可以得多少分. 我决定先强行插入一下费用流的做法,费用流是这样子的:首先对于蔬菜拆点,每一天拆出一个点,因为蔬菜可以购买的量逐渐递减,因此每一天向下一天连接流量为当前天减少\(d\)的边,费用为\(0\),然后考虑把蔬菜…
[NOI2017]蔬菜 题目描述 大意就是有\(n\)种物品,第\(i\)个物品有\(c_i\)个,单价是\(a_i\).然后每天你可以卖出最多\(m\)个物品.每天结束后第\(i\)种物品会减少\(x_i\)个.第一次出售\(i\)物品时还会额外获得\(s_i\)的收益. 每次询问给出\(p\),问\(p\)天能得到的最大收益. \(1\leq n,p\leq 10^5,1\leq m\leq 10,1\leq a_i,c_i\leq 10^9\). 神仙题啊!不会网络流,不会贪心,直接自闭.…
4946: [Noi2017]蔬菜 http://www.lydsy.com/JudgeOnline/upload/Noi2017D2.pdf 分析: 贪心. 首先可以将一个蔬菜拆成两个,一个是有加成的,一个是没有加成的. 贪心:1.多卖出些贵的好,所以先考虑贵的蔬菜:2.对于一个蔬菜,卖的越晚越好(越晚,可以给前面留出位置.) 然后对蔬菜按价格排序,从后往前考虑卖的时间,尽量卖.如果一天的m个蔬菜全卖了,那么下次走到这个位置就没用了,所以直接并查集合并即可.所以复杂度是$O(mn \times…