Loading

5.4 CW 模拟赛 T1. 神灵庙

思路

考虑这样一棵满二叉树差不多长这样
pEbvQ2D.png

其中每个点由 \(\{\)出现次数, 权值\(\}\) 组成

不难发现最终的二叉树形式取决于每个点是否下放子节点
直接按照层数考虑完蛋了

按照深度考虑还行
\(f_{d, x, y, i}\) 表示当前深度为 \(d\), 深度 \(d\) 的点数为 \(x\), 深度 \(d + 1\) 的点数为 \(y\), 已经放了大小前 \(i\) 大的最小花费
不难发现最小花费这个东西约束了这么多是贪的

考虑转移

\[ \begin{align*} \begin{cases} f_{d, x, y, i} \to f_{d + 1, y, x + y, i} & (1)\\ f_{d, x, y, i} \to f_{d, x - 1, y - 1, i + 1} + a_{i + 1} \times d & (2) \\ \end{cases} \end{align*} \]

用了一下类似无限背包的优化
复杂度 \(O(n^4)\)

考虑优化
注意到一个层次做的决策在后面的贡献一定, 考虑直接提前计算
于是可以把 \(d\) 省掉
复杂度 \(O(n^3)\)

本质上是在这个题中, 花费分到每一层是一个前缀

总结

首先注意到叶子结点深度一定, 显然 \(a_i\) 越大放的越低越好
于是考虑处理每个深度放多少 \(a_i\)

这类系数数组问题, 倘若我们按照系数逐步加 \(1\) 进行维护, 可以把最后的花费拆成一步一步的

posted @ 2025-05-04 21:09  Yorg  阅读(11)  评论(0)    收藏  举报