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)$
同样做了口胡题为什么我想不到这么妙的东西啊
还有一个东西是我一直也记不住的:
树联通块数=点-边