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

浙公网安备 33010602011771号