考虑一个朴素的树形 DP:
设 fu,0/1 表示选 / 不选 u 这个点的情况下,以 u 为根子树内的最小点覆盖。
有转移 fu,0=∑(u,v)∈Efv,1fu,1=au+∑(u,v)∈Emin(fv,0,fv,1)
对轻重儿子分类讨论,设 gu,0/1 表示不考虑重儿子贡献的 fu。
则 fu,0=gu,0+fsonu,1fu,1=gu,1+min(fsonu,0,fsonu,1)
定义 ⊗ 为把乘法换成加法,把加法换成去 min 的矩乘。
把转移写成 ⊗ 的形式: [∞gu,0gu,1gu,1]⊗[fsonu,0fsonu,1]=[fu,0fu,1]
树剖维护即可。
代码:
1 |
|