GDKOI2023 Day2 T3

没打比赛,赛后补题

代码还未写好,数据还未测试,可能会出一堆锅

题意

给定一棵树,在这棵树中选出若干个花子图(不重叠),使这几个花子图价值之和最大

花子图定义如下:

直径小于等于三的联通图,其中度数最大的节点为中心节点 $O$,其余节点为边缘节点 $p$

其价值为 $|v_O-\sum v_p|$

思路

考虑树形DP

定义

设 $f_{i,0/1/2/3/4/5}$ 分别表示 $i$ 号节点

$0$: 不被子图包含

$1$: 是在中心节点之下的边缘节点 且 $v_O>\sum v_p$

$2$: 是在中心节点之下的边缘节点 且 $v_O<\sum v_p$

$3$: 是中心节点 且 $v_O>\sum v_p$

$4$: 是中心节点 且 $v_O<\sum v_p$

$5$: 是中心节点之上的叶子节点

转移

$f_{i,0}=\sum_{son_i}max(f_{son,0},f_{son,3},f_{son,4},f_{son,5})$

$f_{i,1}=\sum_{son_i}max(f_{son,0},f_{son,3},f_{son,4},f_{son,5})-v_i$

$f_{i,2}=\sum_{son_i}max(f_{son,0},f_{son,3},f_{son,4},f_{son,5})+v_i$

$f_{i,3}=v_i+\sum_{son_i} max(f_{son,0},f_{son,1},f_{son,3},f_{son,4},f_{son,5})$

$f_{i,4}=-v_i+\sum_{son_i} max(f_{son,0},f_{son,2},f_{son,3},f_{son,4},f_{son,5})$

$f_{i,5}=max_{son_i}((f_{son1,3}-v_i,f_{son1,4}+v_i)+\sum_{son_i,son_i\not=son1}max(f_{son2,0},f_{son2,3},f_{son2,4},f_{son2,5}))$

估计有很多锅

注意

3和4转移时要保证必须要有一个边缘节点

代码

更新ing

posted @ 2023-03-16 13:46  hubingshan  阅读(20)  评论(0)    收藏  举报  来源