传送门
题意:支持单点修改,维护子树里的最大连通子块和。
思路:
扯皮:
b z o j bzoj bzoj卡常差评。
网上的题解大多用了跟什么最大子段和一样的转移方法。
但是我们实际上是可以用矩阵转移的传统 d d p ddp ddp写法来做这道题的。
由于我推出来矩阵是 3 ∗ 3 3*3 3∗3的因此常数巨大 g g gg gg了,因此蒟蒻博主只能提供思路和一份 T L E TLE TLE的代码。
正题:
一道考虑链分治+ d p dp dp套路题。
同样先考虑静态的版本。
显然可以 f i , 0 / 1 f_{i,0/1} fi,0/1表示以 i i i为根的子树, i i i在/不在最大子块里是的最大子块和是多少。
然后显然有如下两个转移式:
f p , 0 = m a x v ∈ s o n { f v , 0 , f v , 1 } f_{p,0}=max_{v\in son}\{f_{v,0},f_{v,1}\} fp,0=maxv∈son{
fv,0,fv,1}
f p , 1 = v a l i + ∑ v ∈ s o n m a x { f v , 1 , 0 } f_{p,1}=val_i+\sum_{v\in son}max\{f_{v,1},0\} fp,1=vali+∑v∈sonmax{
fv,1,0}。
现在考虑链分治,我们记一个 g i , 0 / 1 g_{i,0/1} gi,0/1表示跟以 i i i为根的子树去掉 i i i的重儿子所在子树之后, i i i在/不在最大子块里时的最大子块和是多少。
考虑推 g g g:
g p , 0 = m a x v ∈ s o n , v ̸ = h s o n { f v , 0 , f v , 1 } g_{p,0}=max_{v\in son,v\not=hson}\{f_{v,0},f_{v,1}\} gp,0=maxv∈son,v̸=hson{
fv,0,fv,1}
g p , 1 = f i , 1 = v a l i + ∑ v ∈ s o n , v ̸ = h s o n m a x { 0 , f v , 1 } g_{p,1}=f_{i,1}=val_i+\sum_{v\in son,v\not=hson}max\{0,f_{v,1}\} gp,1=fi,1=vali+∑v∈son,v̸=

这篇博客介绍了如何解决单点修改并维护子树内最大连通子块和的问题。作者提出了使用链分治结合动态规划(DDP)的方法,并分析了3x3矩阵转移的思路,但由于常数过大导致TLE。文章包括静态版本的DP状态设计以及链分治中如何更新状态的讨论,最后提供了部分代码实现。
&spm=1001.2101.3001.5002&articleId=87379178&d=1&t=3&u=32b0f5ea554d4105939b3f5dde41dd10)

被折叠的 条评论
为什么被折叠?



