ARC121F Logical Operations on Tree
题意 : 给定一棵树,现在需要为每一个点填写权值
填写完后,每次可以选择一条边
对于所有
先考虑给定填写情况,如何判定是否存在一种收缩顺序,使得最终剩余的点权值为
考虑一个叶子:(经典的去叶子归纳法)
若父边是
,权值是 ,则必有解。 若父边是
,权值是 ,对答案无影响,直接去掉。 若父边是
,权值是 ,则先处理其余部分,最后收缩。 若父边是
,权值是 ,则必定会将父亲置 一次,不妨首先收缩,这样危害最小。
按照这个策略从深往浅做就是,每个子树只会保留两条信息:最终权值,是否含
然后考虑 DP :
记
当将子树
第一行 :
。 第二行 :
。 第三行 : 任意一侧有
,与 。
复杂度