BZOJ 4001[TJOI2015]概率论

Posted wx62be51b466b43

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 4001[TJOI2015]概率论相关的知识,希望对你有一定的参考价值。

1.其实这是一个纯数学题。​​题目链接​​。额,网上很多人都说好猜出来,这个我是不敢苟同,至少我觉得我是猜不出来,打表也打不出来。因为毫无规律可言。

2.其实这个题就是再说n个节点的二叉树叶子节点的期望是多少,ans=n*(n+1)/(2*(2*n-1)),n是节点个数。首先n个节点的二叉树种类是C_n个,C就是卡特兰数,这个题其实算一下所有的叶子节点有多少个就行了.但是很难算。考虑DP[i][j]代表i个节点,j个叶子的期望,那么转移很简单,但是无法优化,所以不是正解。​​这里是正解​​。推导看起来不是很容易,里面有一步大佬没有给出详细过程,于是有了这篇博客。

                                     【BZOJ

     就是这里,Catalan数的递推人尽皆知,但是生成函数好像很突兀就出来了,至于怎么来的,下面来推导一下。

    前置技能:生成函数。二项式求和常见公式等。

    首先考虑一个很经典的问题:汉诺塔问题。如果有n个盘子,那么移动的次数就是2^n-1.(这里的柱子默认是三根)。这个是怎么来的呢?递推公式啊!(大喊),是的,的确实从递推公式推出来的。但是为了前置知识,还是回顾一下它是怎么来的。

(1)假设hn为n个盘子需要移动的最小次数

(2)开始操作,首先把n-1个移动到另外一个柱子上,这使用hn-1次,然后移动最下面的大盘子,+1次,再把n-1个拿回来,+hn-1次。所以显然递推公式:

                                                             【BZOJ

这个就是高中数列求和了,直接俄求和就可以得到hn的表达式。

    现在考虑hn这个数列,h0,h1,h2,....hn,设g(x)为h数列的生成函数。

                                                            【BZOJ

   对g(x)操作一下:

                                                          【BZOJ

两式相减,可以解出g(x):

                                                          【BZOJ

把g(x)列项,并泰勒展开可得:

                                                         【BZOJ

到了这里,根据生成函数第n项系数的含义,就知道hn=pow(2,n)-1.

      其实这个化简唯一有技巧的地方就在于对g(x)的配凑,然后把关于h的全部消掉。这里为啥会乘-2x啊,其实并不是空想的,从递推公式来的。

   那么现在,如何求卡特兰数的生成函数呢?

    好像,递推公式,和上一个不太像啊?

    继续沿用刚才的符号,假设hn代表第n项卡特兰数的值,hn的递推公式:【BZOJ

                                                           【BZOJ

   g(x)为hn的生成函数:

                                                        【BZOJ

  这个时候,观察hn的表达式,它是有它前边的n-1项确定的,再仔细发现一下,就可以看见,j+n-1-j=n-1.完了,看到这里惊为天人,这不就是卷积的定义?多项式乘法?FFT?循环卷积?的确是这样的,这也就是接下来的推导的Core。

      将g(x)做乘方:

                                 【BZOJ

可以发现,卷积完之后,每一项系数都是该次数对应的Catalan数,所以在化简一下:

                                【BZOJ

因为h1=h2=1,所以为了统一,把h1换为h2,那么就可以得到:

                               【BZOJ

这个式子就和g(x)有一项只差,就差了h1.所以也可以写作:

                              【BZOJ

这是一个函数方程,把g(x)看作y解一元二次方程,就可以得到题解中的,

【BZOJ

g(0)=0,会排除一个答案。所以答案只有一个。但这里就和大佬的题解衔接上了,其实这个题要是真的推,还是蛮困难的。如果知道了很多中间结论,哪会快很多。

 

 


以上是关于BZOJ 4001[TJOI2015]概率论的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 4001 [TJOI2015]概率论 ——找规律

BZOJ4001 [TJOI2015]概率论

BZOJ 4001[TJOI2015]概率论

并不对劲的bzoj4001:loj2105:p3978:[TJOI2015]概率论

[TJOI2015]概率论

LG P3978 [TJOI2015]概率论