背景:在一次模拟赛中,Deepinc、DuanYue和Remarkable分别用了三个式子表示了同一个东西,而他们的式子目测毫无关系,并且是从不一样的角度分析的,致使他们的作法确定是正确的,但却各不相同,咱们来看一下。
数据结构
Deepinc:$ans=\frac{\sum\limits_{i=1}^{m}(i^k-(i-1)^k)*w[i]}{m^k}*(n-k+1)$spa
DuanYue:$g[x]=\sum\limits_{i=1}^{k}C_k^i(x-1)^{k-i}$code
$ans=\frac{\sum\limits_{i=1}^{m}g(i)*w[i]}{m^k}*(n-k+1)$递归
Remarkable:$Max(x)=\sum\limits_{i=0}^{k-1}x^i(x-1)^{k-1-i}$数学
$ans=\frac{\sum\limits_{i=1}^{m}Max(i)*w[i]}{m^k}*(n-k+1)$it
下面咱们来证实它们是一个式子。class
证实:遍历
首先咱们很容易发现一些相同的部分,那么$n-k+1$和$m^k$这些部分咱们忽略掉。并且最后的式子中都有一个$\sum\limits_{i=1}^m$的统计答案式子,那么咱们将求和项证实相等便可获得三个式子相等。im
因此通过上述过程咱们的问题变为:证实$x^k-(x-1)^k(1)=\sum\limits_{i=0}^{k-1}x^i(x-1)^{k-i-1}(2)=\sum\limits_{i=1}^{k}C_k^i(x-1)^{k-i}(3)$便可。统计
首先若是你有n次方差公式的话(1)=(2)应该能够秒掉,那么咱们来证实一下:
$a^k-b^k=(a-b)\sum\limits_{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)\sum\limits_{i=0}^{k-1}a^ib^{k-1-i}$
而后把a套上x,b套上(x-1)一消,(1)=(2)就证完了。
接下来证实(3)=(1),中间有用到二项式定理:
$\sum\limits_{i=1}^{k}C_k^i(x-1)^{k-i}=\sum\limits_{i=1}^{k}C_k^i(x-1)^{k-i}1^i$
$=\sum\limits_{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,则可得命题成立。
结合性质二、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)$。