摘要:
CF1603C Extreme Extension upd 2024.11.14 数论+dp 首先要思考的一定是怎么操作操作次数会最小。然后就会发现一种贪心策略,即让每次分裂出来的最前面的数尽可能大。 求它的所有非空子段的极端值之和不好直接求,但它等价于求每个位置可能的操作次数(可重)之和。(答案的 阅读全文
摘要:
P5021 [NOIP2018 提高组] 赛道修建 upd 2024.11.14 求最大值最小,通常先从二分思考。 枚举完二分的值以后,也就限制了最小值的下届。我们要让满足下届的赛道尽可能多。 由于是树,解决这样的问题就有树上 dp 和贪心。 到底是哪一个?走 dp 的话,状态已经不好设计了,难以描 阅读全文
摘要:
P3592 [POI2015] MYJ upd 2024.11.13 区间 dp 这题的思路没有特别明显。可以从答案的计算出发,既然要消费,不妨设 \([1,n]\) 的最小值位置在 \(p\),那么在这里消费的顾客是可知的。 这时候剩下有消费的顾客一定在 \([1,p-1]\) 和 \([p+1, 阅读全文
摘要:
P4314 CPU 监控 这题是维护历史最大值模板。 先套线段树,考虑怎么维护标记。 我们发现普通的标记的维护遵循能合并就合并,但是这就会出现问题:假如一个标记还没有下传时就被修改(也就是减小),那就会导致子树的历史最大值不正确(变小)。 考虑先不合并同一个节点的标记,把它们看成一个操作序列。这里讲 阅读全文
摘要:
BZOJ2908 又是nand 首先手玩需要计算的值,发现既不满足交换律也不满足结合律,不好维护。 对于位运算,常见的考虑分开每一位计算贡献,对于单独一位,计算较为简单。 既然计算的值只能按顺序计算,那我们只能考虑树剖(其他数据结构不好维护顺序)。给每一位建一棵线段树,在线段树上维护。 注意到 「树 阅读全文
摘要:
P4198 楼房重建 求从 \((0,0)\) 往上看能看到多少栋没被挡住的楼房,带修改。 对于带修改的题目,我们需要快速维护,就需要用到数据结构。这时候通过直觉可以想到,问题是可以分为子问题然后合并得到的,所以我们考虑线段树。 观察到能被看到的楼房,从左到右斜率递增,即我们需要维护斜率递增的序列。 阅读全文
摘要:
Sasha and Array 典题,但还是第一次见。 首先看到斐波那契数列,可以想到矩阵快速幂。 想到这一点之后,很大一部分都解决了。对于修改操作,实际上就是乘以一个矩阵。对于查询,就是矩阵加法。 考虑用线段树维护矩阵。首先区间和可以矩阵加法直接做。由于我们需要区间乘,需要考虑如何下传标记,然后发 阅读全文
摘要:
P5648 Mivik的神力 upd 2024.11.13 卡常倍增 或 树状结构维护 统计类问题,一般思路是找到数据结构维护关键信息。 这题拆不了式子,但是如果可以注意到前缀最大值的单调性,这时候就有非常多的数据结构可以维护了。 单调性怎么用? 贡献是一段段区间的形式,暴力的倍增是首想。 如果将每 阅读全文
摘要:
P8539 「Wdoi-2」来自地上的支援 移项维护特殊值。 这题思路还是挺简单的。 首先分析操作。发现操作序列一定是单调递增的,也就是每个数只会被选中连续几次,之后就不会再被选中了。 然后分析询问。我们发现要满足条件,\(x\) 显然是在 \([x, x+k-1]\) 被选中。 那么首先 \(x+ 阅读全文
摘要:
P9746 「KDOI-06-S」合并序列 upd 2024.11.13 经典区间dp+预处理 只要是做了入门区间 dp 的人都应该看出来。 怎么优化呢?发现了转移时枚举了冗杂转移,原因是可达性 dp 的转移只需要找到一个合法转移即可。 怎么找到一个合法转移? 这时候可以试试预处理一些信息加速转移。 阅读全文