大致题意: 给你一个节点从1~n编号的树,让你从中选择k个节点并通过选择的边联通,且要使选择的边数最少,让你计算对于所有选择k个节点的情况最小选择边数的总和。
题解
这道题乍一看很麻烦:最短路径?最小生成树? L C A LCA LCA?通通都不用!!!
其实,这道题就是一道很简单的数学题。
如上图所示,对于某一条边w,假设它的一边共有t个节点,则显然它的另一边共有n-t个节点。
对于一条边的贡献,我们可以这样理解:在多少种情况下,这条边的两边都有被选入k个点中的点,此时这个点就必须被选。
而对于这些点的分布,有以下三种情况:
①这条边的两边都有点被选,这种情况的可能性就是我们要求的,但是难以直接计算。
②所有被选中的点都在这条边的左面,由于这条边的左边共有t个点,因此这种情况的可能性为 C t k C_t^k Ctk。
③所有被选中的点都在这条边的右面,由于这条边的右边共有n-t个点,因此这种情况的可能性为 C n − t k C_{n-t}^k Cn−tk。
由于总情况数为 C n k C_n^k Cnk,所以,这条边的两边都有点被选的可能性就是 C n k C_n^k Cn