数学与树学(娱乐向)

数学:

背景:在一次模拟赛中,Deepinc、DuanYue和Remarkable分别用了三个式子表示了同一个东西,而他们的式子目测毫无关系,而且是从不同的角度分析的,导致他们的做法肯定是正确的,但却各不相同,我们来看一下。

Deepinc:$ans=frac{sumlimits_{i=1}^{m}(i^k-(i-1)^k)*w[i]}{m^k}*(n-k+1)$

DuanYue:$g[x]=sumlimits_{i=1}^{k}C_k^i(x-1)^{k-i}$

                $ans=frac{sumlimits_{i=1}^{m}g(i)*w[i]}{m^k}*(n-k+1)$

Remarkable:$Max(x)=sumlimits_{i=0}^{k-1}x^i(x-1)^{k-1-i}$

                    $ans=frac{sumlimits_{i=1}^{m}Max(i)*w[i]}{m^k}*(n-k+1)$

下面我们来证明它们是一个式子。

证明:

首先我们很容易发现一些相同的部分,那么$n-k+1$和$m^k$这些部分我们忽略掉。而且最后的式子中都有一个$sumlimits_{i=1}^m$的统计答案式子,那么我们将求和项证明相等即可得到三个式子相等。

所以经过上述过程我们的问题变为:证明$x^k-(x-1)^k(1)=sumlimits_{i=0}^{k-1}x^i(x-1)^{k-i-1}(2)=sumlimits_{i=1}^{k}C_k^i(x-1)^{k-i}(3)$即可。

首先如果你有n次方差公式的话(1)=(2)应该可以秒掉,那么我们来证明一下:

$a^k-b^k=(a-b)sumlimits_{i=0}^{k-1}a^ib^{k-i-1}$

$a^k-b^k=a^k-a^{k-1}b+a^{k-1}b-a^{k-2}b^2+a^{k-2}b^2-……+ab^{k-1}-b^k$

      $=a^{k-1}(a-b)+a^{k-2}b(a-b)+……+b^{k-1}(a-b)$

      $=(a-b)sumlimits_{i=0}^{k-1}a^ib^{k-1-i}$

然后把a套上x,b套上(x-1)一消,(1)=(2)就证完了。

接下来证明(3)=(1),中间有用到二项式定理:

$sumlimits_{i=1}^{k}C_k^i(x-1)^{k-i}=sumlimits_{i=1}^{k}C_k^i(x-1)^{k-i}1^i$

                    $=sumlimits_{i=0}^{k}C_k^i(x-1)^{k-i}1^i-C_k^0(x-1)^{k}1^0$ 

                    $=x^k-(x-1)^k$

所以这三个式子本质相等。

树学:

背景:做模拟题有一道Dsu on the tree,然后还要启发式合并数据结构。然后就引人深思了……

1)数据结构(线段树,平衡树)启发式合并的复杂度证明:

由于启发式合并是将小的插入大的,那么新集合大小至少为小的2倍,也就是小集合的大小翻倍了,可是我们进行操作最多让集合大小变为$n$,而每次翻倍,那么只能操作$logn$次,而一次操作要$O(nlogn)$,所以就是$O(nlog^2n)$喽。

2)树链剖分的复杂度证明:

先来几条性质(定义(u,v)表示一条有向边,size为子树大小):

1>如果$(x,y)$为轻边,则$size[y]<=size[x]/2$

证明:反证法。设$size[y]>size[x]/2$,则没有任何其他子树$size$大于y节点,(因为y一个人都超了一半,别人加一起都打不过它),那么$(x,y)$为重边,与$(x,y)$轻边矛盾。

2>从根到某一点x的路径上轻边个数不多于$O(logn)$

证明:首先x为叶子时个数最多,由于性质1,每沿轻边向下递归一层,则子树大小减半,最多递归$O(logn)$层,所以命题成立。

3>如果我们定义,连续的重边组成重链,那么从根到某一点x的路径上重链数不多于$O(logn)$

证明:重链的端点一定是轻边,否则还会组成更长的重链,而由性质2,则可得命题成立。

结合性质2、3,我们树剖时一般对重链用线段树,那么一次操作就是$O(log^2n)$,对轻边则跳,那么一次操作是$O(logn)$,那么一次操作是$O(log^2n)$,操作数为m,一般而言n,m同阶,总复杂度一般为$O(nlog^2n)$。(当然这是我拿线段树举的例子,如果是树套树这种东西就按照同样的思路算算呗)。

3)Dsu on the tree 复杂度证明:

由上述2)性质2>可知,我们处理一个点时,由于对轻边处理两次,重边是遍历的复杂度,那么在以该点为根子树中,一个轻儿子最多被合并$O(logn)$次(因为这个轻儿子到该点最多有$O(logn)$条轻边,而只有轻边多做了贡献),那么复杂度就是$O(logn)$,总共就是

$O(nlogn)$。

原文地址:https://www.cnblogs.com/Yu-shi/p/11270886.html