ACC 1

为什么不算 Rating???

A

用并查集把需要相等的点连起来,然后对每个连通块记录其不能和哪些连通块颜色相同。

从前往后贪心,在不与之前填过的连通块冲突的前提下填能填的最小数即可。

B

先不考虑传送门,用并查集把连通的点连起来,然后把传送门视为连通块之间的边,

预处理所有有传送门的连通块之间的可达性,这样的连通块只有 \(O(k)\) 个所以复杂度没问题。

查询时相同连通块内的点显然可达,否则查两个连通块的可达性即可。

C

发现左右端点的选择是独立的,所以我们只考虑求 \(l\) 使得 \([l,p]\) 权值最大,求 \(r\) 就倒过来做一遍。

\(a\) 的前缀和数组为 \(x\)\(b\) 的前缀和数组为 \(y\),则 \([l,p]\) 的权值为 \(x_p-x_{l-1}-ky_p+ky_{l-1}\)

\(k,p\) 是定值,只需要求 \(y_{l-1}k-x_{l-1}\) 的最大值,发现这是一次函数求最值的形式,李超线段树维护之。

D

二项式反演:

\[f(n)=\sum\limits_{i\ge n}{i\choose n}g(i)\iff g(n)=\sum\limits_{i\ge n}(-1)^{i-n}{i\choose n}f(i) \]

\(f(k)\) 表示在新树上钦定 \(k\) 条边与原树相同的方案数,\(g(k)\) 表示恰有 \(k\) 条边与原树相同的树的个数(答案),则只需求出 \(f\)

考虑求 \(f(k)\)。若连上某 \(k\) 条边后形成 \(m\) 个连通块,第 \(i\) 个连通块大小为 \(a_i\),则钦定这 \(k\) 条边与原树相同的方案数为 \(n^{m-2}\prod a_i\)

(扩展 Cayley 定理)

考虑 \(\prod a_i\) 的组合意义,发现就是从每个连通块里选一个点的方案数,

所以如果没有那个 \(n^{m-2}\),就是要求选定 \(k\) 条边,再从形成的每个连通块里选一个点的方案数,

\(n^{m-2}\) 看成形成了 \(m\) 个连通块的方案的权值,则 \(f(k)\) 就是选了 \(k\) 条边的每种方案的权值和。

Sol 1

\(f_{u,i,0/1}\) 表示在 \(u\) 子树中选择 \(i\) 条边,在 \(u\) 所在的连通块中是/否已经选了一个点的方案的权值和,树上背包转移即可。

空间开不下,所以把 \(u\) 的孩子 \(v\) 合并到 \(u\) 上之后,把 \(v\) 的状态占用的内存释放掉,这样空间是 \(O(n)\) 的。

Sol 2

\(F(x)=\sum\limits_{i=0}^{n-1}f(i)x^i\)\(F\)\(f\) 的 OGF),考虑拉插出 \(F\) 的系数 \(f\)。考虑如何求 \(F\) 的点值。

规定在之前的基础上,每连一条边方案的权值就乘上 \(x\),即连 \(k\) 条边形成 \(m\) 个连通块的方案的权值为 \(n^{m-2}x^k\)

\(F(x)\) 就是所有方案的权值和(没有选择边数限制),可以用上面的 DP 去掉第二维解决。

这样任取 \(n\) 个互不相同的 \(x_i\),求出对应的 \(F(x_i)\),拉格朗日插值即可算出各项系数。

拉格朗日插值:

\[F(x)=\sum\limits_{i=1}^nF(x_i)\prod\limits_{j\ne i}\dfrac{x-x_j}{x_i-x_j} \]

posted @ 2024-10-03 19:53  5k_sync_closer  阅读(73)  评论(9编辑  收藏  举报