摘要:
给定一棵树,要求对于每一个节点,要么自己放联络器,要么儿子放联络器,要么父亲放联络器,求让所有点满足条件的最少联络器数。一道经典的看守皇宫问题,用DP解决。f[0,now]表示在now节点放联络器的以now为根的子树的最小代价f[1,now]表示now节点不放联络器,被他的儿子联络的以now为根的子树的最小代价f[2,now]表示now节点不放联络器,被他的父亲联络的以now为根的子树的最小代价注意树的形态开始并不确定,需要DFS一次来建树。状态的转移在程序里很清楚,输出答案是min{f[0,1],f[1,1]}(我以1为根节点重建的树),因为根节点不可能再有父亲了,f[2,1]没有意义。Vi 阅读全文