【做题记录】CF109C Lucky Tree

  • \(\text{CF109C Lucky Tree}\)

题目:

一棵树,其中有若干条关键边,求有多少点三元组 \((i,j,k)\) 满足 \(i\)\(j\) 间有关键边且 \(i\)\(k\) 间有关键边。

\(n≤10^5\)


题解:

考虑将关键边断开,那么会得到许多连通块。

从当前连通块中选择一个点 \(i\),再从其他连通块任选两个 \(j,k\) 必然合法。

设当前连通块的大小为 \(k\),那么答案即为

\[\sum2k\dbinom{n-k}{2} \]

就是从 \(n-k\) 中选择两个 \(j,k\),然后对于当前连通块中每一个都需要计算,乘上 \(k\),三元组有序乘上 \(2\)

拓展:

加入是多元组(设为 \(p\) 组),设连通块大小为 \(t_1\dots t_m\),则答案即为一个经典问题,从 \(m\) 堆中选择 \(p\) 个,答案即为 \(\displaystyle{[x^p]\prod_{i=1}^m(1+t_ix)}\),显然使用分治FFT 可以快速做到 \(O(m\log^2m)\)

posted @ 2022-01-17 21:12  trsins  阅读(27)  评论(0)    收藏  举报