Luogu P8744 左孩子右兄弟 题解
原题?Link
题目大意
给定一棵节点个数为 $N$ 的多叉树,求其通过“左孩子右兄弟”表示法转化成的二叉树,高度最高是多少。
解决思路
首先分辨出此题目是树状DP,并了解“左孩子右兄弟”表示法的转换方式,便开始考虑DP的状态转移方程。
状态
由于每个节点由 $1$ 至 $N$ 编号,那么就使用 $dp_{k}$ 表示此时k号节点的目标状态(转化后二叉树的最高高度)。
转移
这里需要用到 贪心策略, 对于一个节点 $k$ , 它的子节点为 ${v_1,v_2,v_3,\dots,v_cnt}$, 那么使用贪心策略找到能作出贡献最大的的子节点 ($\max{v_1,v_2,v_3,\dots,v_cnt}$),再将其他的节点垫在它上面( $\max{v_1,v_2,v_3,\dots,v_k} + cnt$)就行了。
目标状态
根节点编号为 $1$ ,所以整个算法的 目标状态 为 $dp_1$。
Code & 解析
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WANGYUYAO!
评论
LivereGiscus