CodeForces 1097G. Vladislav and a Great Legend
题目简述:给定$n \leq 10^5$个节点的树$T = (V, E)$,令$X \subseteq V$表示一个非空节点集合,定义$f(X)$为包含$X$的最小子树的边数。求
$$ \sum_{\emptyset \neq X \subseteq V} (f(X))^k, $$
其中$k \leq 200$。
解:code
问题转化
我们额外定义$f(\emptyset) = 0$,就不需再单独考虑空集。
利用斯特林数的性质,我们有
$$ x^n = \sum_{k=0}^n k! \begin{Bmatrix} n \\ k \end{Bmatrix} \binom{x}{k}. $$
于是,
$$ \sum_{X \subseteq V} (f(X))^k = \sum_{i=0}^k i! \begin{Bmatrix} n \\ k \end{Bmatrix} \sum_{X \subseteq V} \binom{f(X)}{i}. $$
注意到
$$ \sum_{X \subseteq V} \binom{f(X)}{k} = \sum_{X \subseteq V} \sum_{|Y| = k} [Y \subseteq T(X)], $$
其中$T(X)$表示包含$X$的最小子树的边集。
最小子树边集的刻画
我们考虑$X$中所有节点的最近公共祖先是$x$的情况,即$\text{LCA}(X) = x$,则包含$X$的最小子树的边集$T(X)$可被刻画成:若一个节点$u \neq x$,以其为根的子树$T_u$中存在$X$的一个节点,即$T_u \cap X \neq \emptyset$,则$u$与其父节点$\text{pre}(u)$的边$(u, \text{pre}(u))$必定在最小子树中。形式化地,若$\text{LCA}(X) = x$,则
$$ T(X) = \{ (u, \text{pre}(u)): u \in T_x \setminus \{x\} \land X \cap T_u \neq \emptyset \}. $$
广义最小子树边集
在上述讨论中,我们在假设了$\text{LCA}(X) = x$的条件下,得到$T(X)$的刻画。我们现在去掉$\text{LCA}(X) = x$的限制条件,直接对每个节点$x \in V$,定义
$$ F_x(X) = \{ (u, \text{pre}(u)): u \in T_x \setminus \{x\} \land X \cap T_u \neq \emptyset \}. $$
类似地,我们定义
$$ G_x(X) = \{ (u, \text{pre}(u)): u \in T_x \land X \cap T_u \neq \emptyset \}. $$
我们观察到以下两个性质:
观察0:$F_x(\emptyset) = G_x(\emptyset) = \emptyset$。
观察1:若$X \neq \emptyset$,则$G_x(X) = F_x(X) \cup \{ (x, \text{pre}(x)) \}$。
观察2:若$\text{LCA}(X) = x$,则$T(X) = F_x(X)$。
观察3:设$y$是$x$的子节点,即$y \in \text{son}(x)$,则$Y \subseteq G_y(X)$当且仅当$Y \subseteq F_x(X)$且$\text{LCA}(X) \in T_y$。
再次问题转化
我们令$f[x][k]$表示以$x$为根的子树$T_x$中节点的所有子集$X$的广义最小子树$F_x(X)$中选择$k$条边的方案数之和,即
$$ f[x][k] = \sum_{X \subseteq T_x} \sum_{|Y| = k} [Y \subseteq F_x(X)]. $$
令$g[x][k]$表示以$x$为根的子树$T_x$中节点的所有子集$X$最小子树$G_x(X)$中选择$k$条边的方案数之和,即
$$ g[x][k] = \sum_{X \subseteq T_x} \sum_{|Y| = k} [Y \subseteq G_x(X)]. $$
我们枚举$X$的最近公共祖先$\text{LCA}(X)$,则
$$
\begin{aligned}
\sum_{X \subseteq V} \binom{f(X)}{k}
& = \sum_{x \in V} \sum_{X \subseteq V} [\text{LCA}(X) = x] \sum_{|Y| = k} [Y \subseteq T(X)] \\
& = \sum_{x \in V} \sum_{|Y| = k} \sum_{X \subseteq T_x} [\text{LCA}(X) = x \land Y \subseteq T(X)] \\
& = \sum_{x \in V} \sum_{|Y| = k} \sum_{X \subseteq T_x} [\text{LCA}(X) = x \land Y \subseteq F_x(X)] \\
& = \sum_{x \in V} \sum_{|Y| = k} \sum_{X \subseteq T_x} \Big( [Y \subseteq F_x(X)] - [Y \subseteq F_x(X) \land \text{LCA}(X) \neq x] \Big) \\
& = \sum_{x \in V} \sum_{|Y| = k} \sum_{X \subseteq T_x} \left( [Y \subseteq F_x(X)] - \sum_{y \in \text{son}(x)} [Y \subseteq F_x(X) \land \text{LCA}(X) \in T_y] \right) \\
& = \sum_{x \in V} \sum_{|Y| = k} \sum_{X \subseteq T_x} \left( [Y \subseteq F_x(X)] - \sum_{y \in \text{son}(x)} [Y \subseteq G_x(X)] \right) \\
& = \sum_{x \in V} \left( \sum_{|Y| = k} \sum_{X \subseteq T_x} [Y \subseteq F_x(X)] - \sum_{y \in \text{son}(x)} \sum_{|Y| = k} \sum_{X \subseteq T_x} [Y \subseteq G_x(X)] \right) \\
& = \sum_{x \in V} \left( f[x][k] - \sum_{y \in \text{son}(x)} g[y][k] \right) \\
\end{aligned}
$$
动态规划
以上问题转化后,剩下的问题变成了求所有$f[x][k]$和$g[x][k]$。
注意到
$$
\begin{aligned}
g[x][k]
& = \sum_{X \subseteq T_x} \sum_{|Y| = k} [Y \subseteq G_x(X)] \\
& = \sum_{X \subseteq T_x} \sum_{|Y| = k} \Big( [Y \subseteq G_x(X) \land (x, \text{pre}(x)) \in Y] + [Y \subseteq G_x(X) \land (x, \text{pre}(x)) \notin Y] \Big) \\
& = \sum_{X \subseteq T_x} \left( [G_x(X) \neq \emptyset] \sum_{|Y| = k-1} [Y \subseteq F_x(X)] + \sum_{|Y|=k} [Y \subseteq F_x(X)] \right) \\
& = \sum_{X \subseteq T_x} \left( \sum_{|Y| = k-1} [Y \subseteq F_x(X)] + \sum_{|Y|=k} [Y \subseteq F_x(X)] \right) - \sum_{X \subseteq T_x} [G_x = \emptyset] \sum_{|Y| = k-1} [Y \subseteq F_x(X)] \\
& = f[x][k-1]+f[x][k]-[k = 1].
\end{aligned}
$$
设$\text{son}(x) = \{ y_1, y_2, \dots, y_m \}$,则
$$
\begin{aligned}
f[x][k]
& = \sum_{X \subseteq T_x} \sum_{|Y| = k} [Y \subseteq F_x(X)] \\
& = \sum_{X \subseteq T_x} \sum_{|Y| = k} \left( [x \in X \land Y \subseteq F_x(X)] + [x \notin X \land Y \subseteq F_x(X)] \right) \\
& = 2 \sum_{X \subseteq T_x} \sum_{|Y| = k} [x \notin X \land Y \subseteq F_x(X)] \\
& = 2 \sum_{X \subseteq T_x \setminus \{x\}} \sum_{|Y| = k} [Y \subseteq F_x(X)] \\
& = 2 \sum_{X \subseteq T_x \setminus \{x\}} \sum_{X_1 \subseteq T_{y_1}} \cdots \sum_{X_m \subseteq T_{y_m}} \left[ \bigcup_{i=0}^m X_i = X \right] \sum_{|Y| = k} \sum_{Y_1 \subseteq G_{y_1}(X)} \cdots \sum_{Y_m \subseteq G_{y_m}(X)} \left[\bigcup_{i=0}^m Y_i = Y\right] \\
& = 2 \sum_{X_1 \subseteq T_{y_1}} \cdots \sum_{X_m \subseteq T_{y_m}} \sum_{Y_1 \subseteq G_{y_1}(X)} \cdots \sum_{Y_m \subseteq G_{y_m}(X)} \left[\sum_{i=0}^m |Y_i| = k\right] \\
& = 2 \sum_{k_1+k_2+\dots+k_m = k} \left( \sum_{X_1 \subseteq T_{y_1}} \sum_{|Y_1| = k_1} [Y_1 \subseteq G_{y_1}(X)] \right) \cdots \left( \sum_{X_m \subseteq T_{y_m}} \sum_{|Y_m| = k_m} [Y_m \subseteq G_{y_m}(X)] \right) \\
& = 2 \sum_{k_1+k_2+\dots+k_m = k} g[y_1][k_1] \dots g[y_m][k_m]. \\
\end{aligned}
$$
我们可以看到$f[x][k]$的递推式是一个卷积的形式,可以在$O((\min\{\text{size}(x), k\})^2)$的时间复杂度内求解。
总时间复杂度为
$$ \sum_{x \in V} O((\min\{\text{size}(x), k\})^2) = O(kn). $$
CodeForces 1097G. Vladislav and a Great Legend的更多相关文章
- Codeforces 1097G Vladislav and a Great Legend [树形DP,斯特林数]
洛谷 Codeforces 这题真是妙的很. 通过看题解,终于知道了\(\sum_n f(n)^k\)这种东西怎么算. update:经过思考,我对这题有了更深的理解,现将更新内容放在原题解下方. ...
- Codeforces 1097G - Vladislav and a Great Legend(第二类斯特林数+树上背包)
Codeforces 题目传送门 & 洛谷题目传送门 首先看到这题我的第一反应是:这题跟这题长得好像,不管三七二十一先把 \(k\) 次方展开成斯特林数的形式,\(f(X)^k=\sum\li ...
- 1097G Vladislav and a Great Legend
传送门 分析 https://blog.csdn.net/forever_shi/article/details/88048528 代码 #include<iostream> #inclu ...
- Codeforces 1097 G. Vladislav and a Great Legend
题目链接 一道好题. 题意:给定一棵\(n\)个点的树,求: \[\sum_{S\subseteq \{1,2,\dots,n\}}f(S)^k\] 其中\(f(S)\)代表用树边将点集\(S\)连通 ...
- CF1097G Vladislav and a Great Legend
传送门 题目大意 一棵$n$个点的树,一个点集$S$的权值定义为把这个点击连成一个联通块的最少边数,求: $$ans=\sum_{S\in U}f(S)^k$$ 题解 这题跟gdoi那道题差不多 先把 ...
- Codeforces 1097G
根本想不到 CF1097G 题意 给出一棵树,定义f(S)为用最少的边连通点集$ S$的边数 求$ \sum\limits f(S)^k$ $ n \leq 10^5 k \leq 200$ 题解 假 ...
- CF1097G Vladislav and a Great Legend 组合、树形背包
传送门 看到\(k\)次幂求和先用斯特林数拆幂:\(x^k = \sum\limits_{i=1}^k \binom{x}{i}\left\{ \begin{array}{cccc} k \\ i \ ...
- codeforces 1136E-Nastya Hasn't Written a Legend
传送门:QAQQAQ 题意:有一个数组a和一个数组k,数组a一直保持一个性质:a[i + 1] >= a[i] + k[i].有两种操作:1,给某个元素加上x,但是加上之后要保持数组a的性质.比 ...
- 学习总结:斯特林数( Stirling number )
基本定义 第一类斯特林数:$1 \dots n$的排列中恰好有$k$个环的个数:或是,$n$元置换可分解为$k$个独立的轮换的个数.记作 $$ \begin{bmatrix} n \\ k \end{ ...
随机推荐
- 高复用率的RTSPClient组件EasyRTSPClient设计流程概述
EasyRTSPClient 设计过程 概述 EasyRTSPClient 基于live555构建而成. 今天讲讲EasyRTSPClient的设计过程 EasyRTSPClient,主要包括以下部分 ...
- 九度OJ 1054:字符串内排序 (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7949 解决:4343 题目描述: 输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串. 输入: 测试数据有多组,输 ...
- squared-error loss is much more repaidly updated than mean-absolute-deviation when searching for splits
平方差损失能较绝对值差损失更快地更新
- 韩国版微信Kakao推出公链,能否用区块链实现全球扩张?
2018年是属于区块链的一年,国内外巨头们纷纷布局区块链产业,前不久韩国最大的移动社交平台Kakao集团正式启动了旗下的第一个公链Klaytn的测试网. 此次宣布只是一次试探性举措,旨在对外公布Kla ...
- ul和li 基本用法分析(这里主要想学习怎么用在导航栏中)
常用作:导航,少量数据表格,居中 一.做导航,居中 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- 使用了Tomcat JDBC连接池不能重连的问题
在项目中用到了tomcat 的jdbc连接池,发现一个问题是,当数据库重启时,服务没有重新的去连接数据库,需要将部署的项目重新启动才能连接到数据库.经过测试对配置做一下修改: 在配置dataSourc ...
- rails debug
=debug @thesis config下配置 东西需要重启之后才管用
- BZOJ 2142 礼物 数论
这道题是求组合数终极版. C(n,m) mod P n>=1e9 m>=1e9 P>=1e9且为合数且piqi<=1e5 拓展lucas定理. 实际上就是一点数论小知识的应用. ...
- 【转载】帧缓冲驱动程序分析及其在BSP上的添加
原文地址:(四)帧缓冲驱动程序分析及其在BSP上的添加 作者:gfvvz 一.BSP修改及其分析 1. BSP中直接配置的四个寄存器 S3C6410数据手册的第14.5部分是显示控制器的编程模型部 ...
- ThinkPHP基础(1)
多层MVC模式 M:Model 数据模型层,负责数据操作 V:View 视图层,负责显示视图 C:Controller 控制器,实现业务逻辑 控制器访问及路由解析 通过url地址get参数找到指定的控 ...