专栏文章

题解:P12627 [ICPC 2025 NAC] Ornaments on a Tree

P12627题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min01l02
此快照首次捕获于
2025/12/01 18:21
3 个月前
此快照最后确认于
2025/12/01 18:21
3 个月前
查看原文
超级牛牛题。
首先考虑如果没有限制节点的重量,即对于 i\forall i,都有 wi=1w_i=-1
有一个贪心的策略显然是优的,考虑从叶子节点开始,父亲相同的节点中随机挑选一个使其值为 KK,其余的等于 00,这样可以保证对于每一层,都能保证其吃满限制,肯定最优。
那么有重量限制怎么办呢?
我们可以让每个节点的限制变得不同,具体地,对于 wu1w_u \neq -1,有 :
Ku=Koldwu;Kfa(u)=Kfa(u),oldwuK_u=K_{old} -w_u;K_{fa(u)}=K_{fa(u),old} - w_u
注意上述公式中的 KK 不是题目里给的,而是对于每个节点分别的限制。
我们保留原来从下往上递归的策略,对于每个节点,可以维护 sumusum_u 表示自己和自己儿子节点的总限制和,然后就会发现对于没有限制的节点 uu,其最优的重量为:
wu,new=min(Ksumu,Ksumfa(u))w_{u,new}=\min(K-sum_u,K-sum_{fa(u)})
这个式子中的 KK 即为题目给定的初始值。
跑两次 DFS 即可,时间复杂度 O(N)O(N)
代码很好写,不放了。

评论

0 条评论,欢迎与作者交流。

正在加载评论...