树上涂色

我们来明晰一下状态。注意每个状态说的是与根连通的同色块。也就是说这个子树里面连通同色块可能有很多个,但是与根连通的同色块只有一个

也不难证明,在最优方案中,连通同色块涂全价的点只有一个

我们在考虑推导\(f[i][0]\)时,当然是考虑\(i\)的子节点是否与其同色,所以有了上面的转移方程

\(f[i][1]\)时,我们就要考虑这个全价点在哪里

如果是\(i\),那么显然就是第一个方程

否则肯定是在某一颗子树中,枚举这一颗子树,\(f[i][1]\)表示的树的形态除了这棵子树外剩下的肯定都与\(f[i][0]\)表示的树的形态相同,所以有了第二个方程

“chajia”这一部分就是在考虑\(i\)这个连通块的全价点在哪个子树上。用了一个小贪心,就是有全价点(\(f[i][1]\))的肯定比没全价点的(\(f[i][0]\))劣,所以这个时候让某一个子树中有全价点就可以了,其余子树都是半价点(实际上有我们前面的说法,连通同色块涂全价的点只有一个),然后补齐差价即可

update 2024.6.30

这道题目每一个连通块肯定都是从全价点开始涂,然后剩下的都是半价点,所以全价点很特殊,状态包含全价点的信息就好了

posted @ 2024-01-26 23:54  最爱丁珰  阅读(1)  评论(0编辑  收藏  举报