CF1833G

比较有意思的一道题

容易想到从下往上满足要求。然后这题满足最优子结构,就有个dp。设dp[i][0/1/2]为在以i为根的子树中,i所在连通块大小为1/2/3是否可行。那么dp[i][0]可行的条件就是所有儿子的dp[son_i][2]都可行。dp[i][1]可行的条件就是有一个儿子dp[i][0]可行同时其他儿子dp[i][2]都可行。dp[i][2]可行的条件是要么有一个儿子dp[i][1]可行,并且其他儿子dp[i][2]都可行,要么是有两个儿子dp[i][0]可行同时其他儿子dp[i][2]可行。然后记录一下路径,如果是从dp[i][2]转移过来的,那么要输出。

然后发现这里的dp[i][2]都没什么用,考虑直接扔掉。具体而言,从下往上做,如果这个子树大小为三,那么就扔掉,如果大于三,那么就无解。

posted @   wuhupai  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示