20220315 刷题日记
ARC117 E
考虑到前缀和之后整个题目变成了一个山峰状的东西,考虑到一个限制是同层的,选两个出来,方案数之和要等于 \(k\),所以我们直接考虑逐层来进行 dp。
注意这种 dp 和阶梯状的 dp 相似,都不用记录当前的高度,而只关注转移所需要的东西,即填的数的个数,空的个数,以及当前的对数之和。
同时注意到这种 dp 只能解决 \(>0\) 的情况,对于 \(<0\) 的情况,发现是相似的,用一个 dp 数组,最后统计答案即可。
ARC117 F
我是不会告诉你我贺的题解
这个题目主要考虑二分答案,然后把题目模型转换为差分约束,注意到 SPFA 会超时,我们不妨考虑,我们去二分 \(s_n\),发现左右限制是相反的,所以二分具有其正确性,看二分是非能够得到这样的一个值即可。复杂度是两个 \(\log\)
P6072
考虑分两步来进行,第一步是子树补选两个点,一个是子树内选两个点。两者都可以做到一个 \(\log\)
具体来说,子树补,我们先选一个全局最优解,发现除了这两个点及祖先来说,其余点的答案都是这个最优解,至于链上的最优解,可以从上到下解决,只有 \(O(n)\) 次加点。
子树内,同样选一个全局最优解,发现除了这两个点 lca 祖先,其余的点答案都还没有确定,由于子树补答案已经最优,所以这两条路径上的点的其余儿子的答案是只需要考虑的,其余的点不用考虑,所以我们处理一下。还有就是链上的点,我们从下往上,一样只需要 \(O(n)\) 次加点。
P4007
显然矩阵优化 dp。
第一个技巧是,可以预处理矩阵的二进制幂,然后到时候现乘。
如果期望不想逆推的话,正推也可以,例如这个题,我们算出到任意状态的概率,那么下一秒对期望做出的贡献就是当前状态出现的概率乘上对期望做贡献的概率,就可以避免递推。一定要注意要把 dp 式子写全。
LOJ6276
我们直接可以考虑枚举所有相同颜色之间,发现整个限制相当于给定两个区间,两个区间不能同时存在端点,容易发现放到二维平面上,转化成求矩阵面积并问题,有扫描线就可以解决。
P4766
区间 dp,考虑到我们实际上在一个区间内花费,最大的那个是肯定要花费的,然后我们考虑从这条最大的线段里面选择一个位置,然后考虑在这个位置去切割,两边结果合并。