CF1197E Culture Code
显然 D p \tt Dp Dp 肯定是不能依赖于体积的。我们考虑选择当前位置的方案。
容易发现每个点能选择的对象构成了一个 D A G \tt DAG DAG。
设 f ( i ) f(i) f(i) 表示选择了点 i i i 的最小剩余体积,显然 f ( i ) = − i n ( i ) + min j f ( j ) + o u t ( j ) f(i) = -in(i) + \min_{j} f(j) + out(j) f(i)=−in(i)+minjf(j)+out(j),后面的东西直接使用前缀维护即可。
对于方案数我们可以同样维护一个前缀和,但是其代表的是考虑了点 i i i 得到最终答案是 f ( i ) f(i) f(i) 的最小方案。
设 g ( i ) g(i) g(i) 表示最终最小值是 f ( i ) f(i) f(i) 的时候,考虑了 1 ∼ i 1 \sim i 1∼i 的答案。
显然这个东西包含了之前的所有合法方案。
因为如果当前点是终止点,之后不会让其贡献重复叠加。
如果当前点不是终止点,那么其贡献还可能更新到之后的点改变。
但是我们需要保证 o u t out out 的合法性,直接按照

本文介绍了CF1197E Culture Code的解决方案,强调Dp策略不能依赖于体积。通过分析,指出每个点的选择形成了一个有向无环图(DAG)。定义状态f(i)表示选择点i后的最小剩余体积,利用前缀和维护。同时,通过g(i)表示以f(i)为最小值的方案数,并讨论了如何处理终止点和起始点的边界条件,以及如何确保out的合法性。
最低0.47元/天 解锁文章
600

被折叠的 条评论
为什么被折叠?



