CSPS模拟 74

  T1

    贪心,如果用set考虑一下multi。

  T2

    难道是我的疑问都太过sb?

    从来没人愿意认真思考一下我的问题。

    真实情况是,我太sb了

    正如队长所说,这东西简单归纳即可

    更好,思考量这东西本该我自己来补。

    

    设$dp[i][j]$为i个点的森林,j个点在特定一棵树的概率

    考虑从i-1转移过来,

      i-1个点的森林,j个点在特定一棵树上时,第i个点挂在树外,方案数为$dp[i-1][j]*\frac{(i-1-j)+1}{j+(i-1-j)+1}$ 其中加的1是独立成树

      i-1个点的森林,j-1个点在特定一棵树上时,第i个点在树内,方案数为$dp[i-1][j-1]*\frac{j-1}{(j-1)+(i-1-(j-1))+1}$

    于是发现$dp[i][j]==\frac{1}{i} ???$

    考虑加入第i个点的过程。

      加入第i个点时,算上所有情况,一共有i种选择。由于插入的有序性,可以看作点是带编号的,特定的那棵树也可以看作点1所在的树T1

      特定局面下,第i个点进入T1的概率不应视作随机,这与T1的大小有关。

    认识到上面两点后,我们讨论一下$dp[i][j]=1/i$这件事

      $i==1$时,显然成立。

      假设$i-1$时成立,由于第i次加点时,对于大小为k的T1有$\frac{k}{i}$的概率将新点挂在上面,

      则T1的大小从k变为k+1的概率为:$\frac{1}{i-1} * \frac{k}{i}$

      还有本来就是k+1本次不改变的概率:$\frac{1}{i-1}* \frac{(i-1)-k}{i}$

      加一起,$dp[i][k]=\frac{1}{i}$

    所以这个数组直接用逆元代替就可以。

    设$f[i][j]$为i个点的树,深度不超j的方案数,$g[i][j]$为i个点的森林,深度不超j的方案数

    则$f[i][j]$可以视作i-1个点,深度不超j-1的森林用再用一个根节点串起来,用$g[i-1][j-1]$代替就可以。

    所以只需要一个$g$数组。

    g数组的求法,考虑拆成一棵树T1和剩下的森林

    枚举T1的大小$g[i][j]=\sum\limits_{k=1}^i g[k-1][j-1]*g[i-k][j]*inv[i]$

   于是结束了,但是仍然存在一个问题。

   上面已提过一个森林中,特定树的各种大小的概率都相同

   那为什么$f[i][j]!=g[i][j]*inv[i]$(让g的点集中在一棵树上)

   其实如果真的认真推导了上边的过程的话,这个问题不应该出现

   这棵树在森林中的大小的所有情况概率相等,不能代表这棵树自己的深度特征。

 

  T3

    %一%007神仙的$O(1)$的莫队算法。

    其实并不是卡了莫队,而是因为莫队移动不是$O(1)$

    同样做了口胡题为什么我想不到这么妙的东西啊

    还有一个东西是我一直也记不住的:

      树联通块数=点-边

posted @ 2019-10-15 16:15  Yxsplayxs  阅读(155)  评论(0编辑  收藏  举报