• 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]=sumlimits_{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)$

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

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

          树联通块数=点-边

  • 相关阅读:
    【转】使用TortoiseSVN搭建本地的版本控制库
    操作系统的大端小端
    从《王者荣耀》谈游戏的帧同步
    二叉搜索树的第K大节点
    Mysql千万级大表优化
    海量数据存储方案
    递归函数思维
    time_wait的快速回收和重用
    Nginx配置反向代理服务器
    MySQL-怎样使update操作sleep一段时间
  • 原文地址:https://www.cnblogs.com/yxsplayxs/p/11678394.html
Copyright © 2020-2023  润新知