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$类,…
容易想到一个费用流做法:将每种蔬菜拆成p种,对应p个过期时间,每一种向可以卖的时间连边,第一次卖的奖励算在最晚过期的一种里.对于天数动态加点.不过这样边数太多了,因为第i天能卖的第i-1天一定能卖,可以改成每一种只向过期时间连边然后第i天向第i-1天连边.这样就有60分了.但费用流没有什么优化空间了. 如果蔬菜不会过期的话,贪心做法非常显然.那么,考虑让时光倒流.这样蔬菜只会每天增加,每次贪心的选出价值最大的行了.对于奖励,拆成两种蔬菜就好. 考虑对于单次询问具体应该怎么做.用一个大根堆维护应该…
题目描述 小 N 是蔬菜仓库的管理员,负责设计蔬菜的销售方案. 在蔬菜仓库中,共存放有nn 种蔬菜,小NN 需要根据不同蔬菜的特性,综合考虑各方面因素,设计合理的销售方案,以获得最多的收益. 在计算销售蔬菜的收益时,每销售一个单位第ii 种蔬菜,就可以获得a_iai​ 的收益. 特别地,由于政策鼓励商家进行多样化销售,第一次销售第 i 种蔬菜时,还会额外得到s_isi​ 的额外收益. 在经营开始时,第ii 种蔬菜的库存为c_ici​ 个单位. 然而,蔬菜的保鲜时间非常有限,一旦变质就不能进行销售…
[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…
题面: [NOI2017]蔬菜 题解: 首先每天蔬菜会变质这点并不好处理,我们考虑让时间倒流,从后向前处理,这样的话就相当于每天都会得到一定量的蔬菜. 这样做有什么好处呢? 我们可以发现一个性质:如果从后向前贪心卖菜,那么因为现在可以卖的菜,以后一定还可以卖(因为变成了得到菜),因此贪心就是对的了. 因此我们用堆维护一下,从后向前贪心的卖菜,每次优先卖价格高的,第一次卖的菜价格要加上奖励的贡献,并且只能先卖一个,因为卖完这一个之后的同种菜没有奖励了,相当于贡献有变化. 这样向前一直贪到第一天,于…
https://www.lydsy.com/JudgeOnline/problem.php?id=4946 https://www.luogu.org/problemnew/show/P3826 http://uoj.ac/problem/318 题意看原题…… 不得不说是一道十分妙的题,辛酸史放在后面讲. 参考:noi2017知乎上lzz的题解,洛谷上唯一一篇题解. lzz的算法不太好理解啊……于是copy的洛谷题解. 看到如此乱七八糟的题目限制很容易想到费用流,但是数据范围告诉我们显然不可以…
小 N 是蔬菜仓库的管理员,负责设计蔬菜的销售方案. 在蔬菜仓库中,共存放有 n 种蔬菜,小 N 需要根据不同蔬菜的特性,综合考虑各 方面因素,设计合理的销售方案,以获得最多的收益. 在计算销售蔬菜的收益时,每销售一个单位第 i 种蔬菜,就可以获得 ai 的收益. 特别地,由于政策鼓励商家进行多样化销售,第一次销售第 i 种蔬菜时,还会额外 得到 si 的额外收益. 在经营开始时,第 i 种蔬菜的库存为 ci 个单位. 然而,蔬菜的保鲜时间非常有限,一旦变质就不能进行销售,不过聪明的小 N 已…
神仙题啊! 早上开了两个多小时,终于肝出来了,真香 我们考虑从第 \(10^5\) 天开始递推,先生成 \(p=10^5\) 的解,然后逐步推出 \(p-1,...,2,1\) 的解. 那怎么推出 \(p=10^5\) 的解呢? 现在将题目转化成不停进货然后取 \(m\) 个最大的问题,然后删除最大并 \(push\) 进去.这我们可以想到大根堆. 但是由于政策 增加题目难度,有一个 \(s\).我们需要先将 \((a_i+s_i,i)\) \(push\) 进去,然后用掉了以后将 \((a_i…
Description http://www.lydsy.com/JudgeOnline/upload/Noi2017D2.pdf Solution 网上大部分都是并查集写法,但是有大神写了非并查集写法,特别容易理解 首先 \(s_i\) 的限制,只需将每一个蔬菜分出一个价值为 \(a_i+s_i\) 且过期时间为该蔬菜最晚的一天的蔬菜 把时间倒序之后,问题转化为每个蔬菜会在第几天出现,每天贪心选择价值最大的即可 先求出 \(\max \{p_i \}\) 的答案,然后递推 \([1,\max…
题目链接 因为有删除,考虑倒序处理某个p的询问. 那么每天删除xi的蔬菜就变成了每天运来xi的蔬菜.那么我们取当前最优的即可,早取晚取都一样,不需要留给后面取,还能给后面更优的留出空间. 这样就只需考虑现在了.于是我们能得到p为某个值的答案.多次询问显然需要递推. 而p-1与p相比只是少卖了m的蔬菜.把收益最小的m个删掉即可. 注意堆的插入删除顺序. 复杂度\(O(mqlogn)\). 还有一种求询问p的方法,是直接按蔬菜价值排序,然后每次找到其出现位置往前覆盖.如果某天已卖m则用并查集合并掉.…
题目链接 uoj 题解 以前看别人博客,在考场上用费用流做,一直以为这题是毒瘤网络流题 没想到竟然是贪心模拟题... 如果只有一个蔬菜呢?这就是一个经典的普及难度的贪心,正着推面临优先选择的困难,而逆着推由于不存在淘汰,所以可以贪心选最大的 首先\(s_i\)的限制很容易处理,只需将每一个蔬菜分出一个价值\(a_i + s_i\)且过期时间为该蔬菜最后一个的蔬菜 现在我们计算出每个蔬菜最晚放置的时间点,将每一天看做一个盒子,我们贪心地优先将价值大的蔬菜从它能放入的地方一直往前放 由于每个盒子最多…
题目链接 题解: 貌似一眼看过去是一个贪心. 其他的算法要记录的东西就太多了. 部分分其实很高.但是没有什么提示. 想一些套路:二分?不行还要贪心判断. 分治?前后取法是有影响的. 时光倒流? 也许可以? 其实比较麻烦的是蔬菜变质.这样就使得我们不能每次卖最贵的. 如果时光倒流,那么就会有些蔬菜在某一个时刻以某一个初值出现,然后每过一天,增长固定的个数. 那么,面对最后一天,我们就剩下这么多的菜了.肯定要卖最贵的m个 然后,倒数第二天,一些蔬菜出现了,一些蔬菜变多了,我们在最后一天卖菜的基础上,…
luogu 那个第一次购买有\(s_i\)奖励,可以看成是多一种蔬菜\(i+n\),权值为\(w_i+s_i\),每天减少量\(x\)为0个,保质期\(\lceil\frac{c_i}{x_i}\rceil\),数量为1的蔬菜,同时要把原来的\(c_i\)减一 现在考虑只有一组询问,我们贪心的想,应该先把价值最高的给卖了.所以按照权值从大到小排序.然后当前这种菜显然能在保质期期限内堆在后面卖就在后面卖,这样对后面保质期段的菜更优,那么就是从保质期那天开始往前推,记录能放的菜的数量,每天能放就放,…
传送门 注意每一单位蔬菜的变质时间是固定的,不随销售发生变化 固定的...... 就是每一个单位的蔬菜在哪一天变质是早就定好了的 发现从第一天推到最后一天很不好搞 考虑反过来,从最后一天推到第一天,这样就相当于每天多一些蔬菜 不管现在怎么卖都不会影响下一天多的蔬菜,不会出现贵的留到后面卖的操作,因为后面蔬菜只会越来越多,不如把空间留给之后可能会出现的更好的菜 可以直接贪心了,每天都卖最贵的 $m$ 单位蔬菜,这样就一定是最优的 然后就是维护每天的各种菜了,开个堆并维护一堆东西,没什么思维...…
这题很有思维难度,乍一看基本无从下手. 给每个蔬菜钦定退役的时间显然很困难,可以考虑让时光倒流,从后向前递推,然后就变成了某个时间点有一部分蔬菜服役,而已经服役的蔬菜不会退役了.然后就可以直接考虑贪心,每种第一个出现的蔬菜,显然可以单独考虑,加上s[i],然后把蔬菜放到堆里面,就可以在O(pmlogn)的复杂度下求出f[p]了,用堆维护即可,假定p=1e5. 然后发现这个玩意可以递推求解,第p-1天在役的蔬菜一定不少于第p天的,显然只需去掉利润最少的m个即可. #include<bits/std…
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noip前的杂题训练,我也很无奈啊 做完了的扔最后,欢迎好题推荐 这么多题肯定是完不成了,能多做一道是一道吧 DP yyb真是强得不要不要的辣:http://www.cnblogs.com/cjyyb/category/1036536.html [ ] [SDOI2010]地精部落 https://www…
[NOI2010] [NOI2010]海拔 高度只需要0/1,所以一个合法方案就是一个割,平面图求最小割. [NOI2010]航空管制 反序拓扑排序,每次取出第一类限制最大的放置,这样做答案不会更劣. 考虑如何求每一个的最早时间,同上述拓扑排序,该元素不入队,当无点可拓展时就是最早时间. [NOI2010]超级钢琴 对每一个左端点维护当前取出了前几大的右端点,用堆+主席树维护. [NOI2011] [NOI2011]兔农 不难发现数列模意义下的进程是:斐波那切数列,首项回归0(减一操作),斐波那…
「NOI2017」蔬菜 首先考虑流 可以从 \(s\) 流入表示得到蔬菜,流出到 \(t\) 表示卖出蔬菜,给每个蔬菜拆点,并给它它每天应得的蔬菜. 但是我们没办法直接给,注意到如果把变质看成得到并可以留给上一天,我们每天就可以得到变质的蔬菜并获得从后一天没用完的蔬菜,这就是建图的大体思路. 然后你发现这个东西需要对询问天数动态加点,加点后发现需要退流,可以暴力退 \(m\) 的流,复杂度是正确的. 期望得分 \(60\) 分 然后研究一下,发现退流是没有必要的,也就是说第 \(i\) 天选择的…
题解 从后往前递推 如果我们知道了第i天的最优方案和第i天选择的蔬菜,加入第i天选择的蔬菜数量为S,我们只需要减去最小的S - (i - 1) * M 个蔬菜即可 所以我们只要求出最后一天的蔬菜选择 我们把每个蔬菜拆成c - 1个价值为a和1个价值为a + s,从大到小排序,然后用并查集维护可以选择的位置 代码 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm&…
$n \leq 100000$种蔬菜,每个蔬菜有:一单位价格:卖第一单位时额外价格:总量:每天腐烂量.每天能卖$m \leq 10$单位蔬菜,多次询问:前$k \leq 100000$天最多收入多少.价格.量$ \leq 1e9$. 我也不知道为啥88分QAQ 求大佬看看啊 把第一单位蔬菜和其他的拆开,记下他们“能卖的最后一天”,假设第一单位蔬菜比其他的要晚卖.这样,按价格排序后,只需要贪心地填入能填的最晚的一天就好了.找最晚的一天用并查集.这样就求出了天数不限时的答案. 要求有限天数内的答案,…
正解:贪心 解题报告: umm,,,其实我还不会 废话我这么菜怎么可能懂QAQ 先占坑,想学习这题很久了呢QAQ…
原文链接 www.cnblogs.com/zhouzhendong/p/UOJ318.html 前言 我怎么越来越菜了.先是题目读错,想了个李超树假算法,然后读懂题之后没了耐心直接贺题.然后发现我数据结构和套路题做傻了,稍微要动点脑子的题我就没脑子了.自闭了. 题解 首先,对于一个物品,我们将它拆成若干份:最后一天拆成两份,一份的个数为1 ,价值为 a+s:另一份的个数为 (c-1) mod x,价值为 a.对于在 $(c-1) / x $ 天以及以前,每天有一份个数为 x,价值为 a 的物品.…
LOJ_2305_「NOI2017」游戏 _2-sat 题意: 给你一个长度为n的字符串S,其中第i个字符为a表示第i个地图只能用B,C两种赛车,为b表示第i个地图只能用A,C两种赛车,为c表示第i个地图只能用A,B两种赛车. 另有d(d<=8)个字符x,表示这个地图三种车都能用.有m个要求,(i,hi,j,hj)表示如果在第i场用了hi,在第j场必须用hj. 求一种满足要求的方案,若无解输出-1. 样例输入 3 1 xcc 1 1 A 2 B 样例输出 ABA 分析:先思考如果没有万能的x该怎…
补充一个题意不太清楚的地方:蔬菜坏掉是假设蔬菜都有标号,那么特定标号的蔬菜就会在特定时间坏掉.如果你及时卖了它们,那么那一天就不会有新的蔬菜坏掉. 结论1:如果我们知道了k天的答案,那么我们直接扔掉若干个最小的蔬菜即可获得k - 1天的答案. 证:因为能在k天卖的一定能在k - 1天卖..... 推论1:只要求100000天卖哪些蔬菜即可. 结论2:最贵的菜越晚卖越好. 证:因为它最贵,所以是一定要卖的.我们要让别的菜尽量卖的多,晚卖有决策包容性. 推论2:按照从贵到廉考虑蔬菜,每个菜越晚卖越好…
这是约半年前写的题解了,就搬过来吧 感觉这是NOI2017最水的一题(当然我还是不会2333),因为是一道裸的2-SAT.我就是看着这道题学的2-SAT 算法一:暴力枚举.对于abc二进制枚举,对于x则采用三进制枚举即可,复杂度O(3^d*2^(n-d)),再进行适当剪支,期望得分:40~50 算法二:对于d=0的点,采用2-SAT算法,这是最裸的2-SAT,这样,复杂度为O(n+m),综合算法一,期望得分为60 算法三:不妨对于d个x,采用三进制枚举,枚举a/b/c,再做裸的2-SAT即可,复…
Description 题库链接 小 N 是蔬菜仓库的管理员,负责设计蔬菜的销售方案. 在蔬菜仓库中,共存放有 \(n\) 种蔬菜,小 N 需要根据不同蔬菜的特性,综合考虑各方面因素,设计合理的销售方案,以获得最多的收益. 在计算销售蔬菜的收益时,每销售一个单位第 \(i\) 种蔬菜,就可以获得 \(a_i\) 的收益. 特别地,由于政策鼓励商家进行多样化销售,第一次销售第 i 种蔬菜时,还会额外得到 \(s_i\) 的额外收益. 在经营开始时,第 \(i\) 种蔬菜的库存为 \(c_i\) 个…
[NOI2017]泳池 实在没有思路啊~~~ luogu题解 1.差分,转化成至多k的概率减去至多k-1的概率.这样就不用记录“有没有出现k”这个信息了 2.n是1e9,感觉要递推然后利用数列的加速技巧 f[n]表示宽度为n的值,然后枚举最后一个连续高度至少为1的块,dp数组辅助 神仙dp:dp[i][j]表示宽度为i,j的高度出现限制,任意矩形不大于k的概率 设计确实巧妙:宽度利于转移给f,高度利于自己的转移 dp数组转移:枚举第一个到达j的限制的位置,这样,前面部分限制至少是j+1,后面至少…