• 数学与树学(娱乐向)


    数学:

    背景:在一次模拟赛中,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)$。

  • 相关阅读:
    详解学习C#的方法和步骤
    将今天写进历史,即可得出现在的世界是数字的
    60秒,我们可以干什么?
    《每个人都会死,但我总以为自己不会》让我直面死亡
    介绍Ext JS 4.2的新特性的《深入浅出Ext JS》上市
    十一阅读攻略:和土豪做朋友,告别穷屌丝,迎接高富帅,成功逆袭!
    超低成本----音视频通讯+共享屏幕+电子白板
    Hbase split的三种方式和split的过程
    分布式数据库 HBase
    Sqoop-1.4.6.bin__hadoop-2.0.4-alpha 环境搭建
  • 原文地址:https://www.cnblogs.com/Yu-shi/p/11270886.html
Copyright © 2020-2023  润新知