「ZJOI 2006」三色二叉树

该博客探讨了ZJOI 2006年竞赛中的一道题目,涉及给定二叉树节点染色的问题。每个节点必须与子节点颜色不同,如果一个节点有两个子节点,则它们颜色不同。博主分享了如何使用树形动态规划(dp)解决这一问题,以找出最多和最少能染多少个节点为绿色(G)。博客提供了问题描述、解决方案思路和代码实现,时间复杂度为O(n)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传送门


problem

给出一个 n n n 个点的二叉树,你要给每个点染 R/G/B \texttt{R/G/B} R/G/B 三种颜色,且有如下限制:

  • 一个点的颜色不能与其子节点相同。
  • 若一个点有两个子节点,那么这两个子节点的颜色不同。

求出最多 / / /最少给多少个点染 G \texttt G G

数据范围: n ≤ 5 × 1 0 5 n\le5\times10^5 n5×105


solution

感觉自己树形 d p dp dp 比较薄弱,找了道水题来做

m x [ i ] [ 0 / 1 / 2 ] \mathrm{mx}[i][0/1/2] mx[i][0/1/2] d p dp dp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值