【做题记录】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)\)。

浙公网安备 33010602011771号