专栏文章

题解:AT_arc101_c [ARC101E] Ribbons on Tree

AT_arc101_c题解参与者 3已保存评论 2

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
2 条
当前快照
1 份
快照标识符
@miqqnj8c
此快照首次捕获于
2025/12/04 09:09
3 个月前
此快照最后确认于
2025/12/04 09:09
3 个月前
查看原文
直接进行 dp 是简单的,但是复杂度达到了不可接受的 O(n3)O(n^3)。具体就是设 dpi,jdp_{i,j} 表示以 ii 为根的子树内,还剩 jj 个点没有匹配的方案数。子树之间合并的转移过于复杂,貌似不可以直接优化。
考虑容斥,强制钦定其中若干条边断开(即这条边一定不染色,从而把整棵树分成若干个联通块),其它边没有限制的匹配数。
首先思考如何在知道断掉边的集合时求出对应的方案数。设 fif_i 表示联通块大小为 ii 时, 块内点两两匹配的方案数,那么可以得出 fif_i 简单的递推形式 fi=1×3×(i1)f_i = 1 \times 3 \times \dots (i-1)(需要保证 ii 为偶数)。所以如果固定了断掉的边的集合 EE,分成的 E+1|E|+1 个联通块大小集合是 SS,那么方案数就是 (1)E+1xSfx(-1)^{|E|+1}\prod_{x \in S} f_x,还可以把 1-1 乘进去方便后面的计算。
解决了上面的问题后,就把原问题转化为:一个大小为 xx 的联通块权值为 fx-f_x,现在要把一棵树划分成若干个联通块,定义一种划分的价值为所有联通块的权值的乘积。求所有划分的价值之和。
这个问题可以用树形 dp 解决。设 fi,jf_{i,j} 表示以 ii 为根的子树内,与 ii 联通的联通块大小为 jj 的价值之和(不把当前与 ii 的联通块算在内,否则难以转移)。
转移是显然的。
  1. fx,j×fj×ffatherx,kffatherx,kf_{x,j} \times -f_j \times f_{father_x,k} \to f_{father_x,k}(断掉连向父亲的边。)
  2. fx,j×ffatherx,kffatherx,j+kf_{x,j} \times f_{father_x,k} \to f_{father_x,j+k}(不断,把两个联通块合并。)

评论

2 条评论,欢迎与作者交流。

正在加载评论...