摘要:
题解 设$f[u][0/1/2]$表示当前节点$u$,放或不放($0/1$)时其子树满足题目要求的最小代价,$2$表示$0/1$中的最小值。 则有: $$ f[u][0]=\sum_{v\in son[u]}f[v][1]\\ f[u][1]=\sum_{v\in son[u]}f[v][2]\\ 阅读全文
该文被密码保护。 阅读全文
摘要:
题解 不妨采取重链剖分的方式把路径剖成区间,然后用线段树维护,考虑如何合并一个区间 由于重链剖分跳$top$时,两个端点的路径是独立的,所以不能像普通查询那样直接累加贡献,要分开处理,最后存在一个特殊情况,要将左区间的左右端点反置。(画图即可明白) 代码 cpp include include us 阅读全文