期望

看了几个课件,挑着比较有意思的写了。

1.

倒推期望,设\(dp[i][j]\)为已经有\(i\)\(j\)列有至少一个被染色的,还需要染的次数的期望。
那么有\(dp[n][n]=0\),倒推到初始状态即可。
有:

\[dp[i][j]=\frac{ij}{n^2}dp[i][j]+\frac{(n-i)j}{n^2}dp[i+1][j]+\frac{i(n-j)}{n^2}dp[i][j+1]+\frac{(n-i)(n-j)}{n^2}dp[i+1][j+1] \]

所以:

\[dp[i][j]=\frac{n^2+(n-i)jdp[i+1][j]+i(n-j)dp[i][j+1]+(n-i)(n-j)dp[i+1][j+1]}{n^2-ij} \]

这样我们\(O(n^2)\)\(dp\)就可以了。

2.

先考虑黑点的贡献。
\(dp[i]\)表示从\(i\)开始走到结束经过黑点的期望个数。
有:

\[dp[x]=[col[x]=black]+[d[x]>1]\frac{1}{d[x]}\sum\limits_{(x,t)\in E}dp[t] \]

这样转移出现了环。
发现可以不用高斯消元而系数递推。
得到:

\[dp[x]=k[x]dp[f]+b[x] \]

然后我们解一下得到:

\[\begin{aligned} dp[x]&=[col[x]=black]+[d[x]>1]\frac{1}{d[x]}\sum\limits_{(x,t)\in E}dp[t]\\ &=[col[x]=black]+[d[x]>1]\frac{1}{d[x]}dp[f]+[d[x]>1]\frac{1}{d[x]}\sum\limits_{(x,t)\in E}dp[t]\\ &=k[x]dp[f]+b[x]\\ k[x]&=[d[x]>1]\frac{1}{d[x]}\\ b[x]&=[col[x]=black]+[d[x]>1]\frac{1}{d[x]}\sum\limits_{(x,t)\in E}dp[t]\\ \end{aligned} \]

这样可以叶子向根进行系数递推了。
复杂度是线性的。
然后我们考虑白色点的贡献。
其实就是经过一个白点的概率。
对于每一个白点,我们去掉其所有儿子并把它染黑,其他点全都染白,这样转化成和刚才一样的问题了。再利用一下系数递推时候求出的\(k,b\)就可以线性的统计这一部分的答案了。

3.

这个题的话。
考虑把链变成圆,加一个点为\(n+1\),那么就相当于是从\(n+1\)出发,选择顺逆时针,在选择一个点作为起点,不能够走回\(n+1\)这个点的方案数。
那么总方案是\((2(n+1))^m\),而每一个位置被占据的概率是相同的,是\(\frac{m}{n+1}\)
那么答案就是:\((2(n+1))\frac{n+1-m}{n+1}\)

4.

我们发现这\(m\)个人很讨厌。我们假设\(1\)\(1\)位置,那么最终答案乘上\(2^n\)即可。
然后考虑每次和\(1\)所在区间合并的区间总共有\(n\)个。
这些区间中最小的那个数将会和\(1\)对战,我们要求这些区间的最小数没有任何一个是\(m\)中的某个人。
这样我们求:\(f(S)\)表示\(S\)集合所代表区间中的所有人的最小值是\(m\)个人之一,剩下的区间生死未卜的方案数。
我们把\(m\)个人排个序然后从大到小依次做\(dp\)
\(dp[i][S]\)为前\(i\)大的人中集合\(S\)的区间中的最小值必然是\(m\)个人之一,而剩下的区间生死未卜的方案数。
枚举两种转移。
1.不放入集合中。
2.加入新出现的集合作为最小值。
转移就是:

\[dp[i][S]=dp[i+1][S]+\sum\limits_{k\in \not S}dp[i+1][S-2^k]\binom{2^n-a[i]-S+2^k}{2^{k}-1}(2^k)! \]

这样我们就得到了:

\[f(S)=dp[1][S](2^n-S-1)! \]

考虑用\(f(S)\)来求答案。
那么就有:

\[ans=\sum\limits_{S\subseteq U}(-1)^{|S|}f(S) \]

5.

\(dp[i][j]\)为前\(i\)个数,第\(i\)个数为\(j\)的方案数。

\[dp[i][j]=\sum\limits_{k=1}^{m}dp[i][j]-\sum\limits_{k=1}^{m}[k=\not j]dp[i-a[j]-1][k] \]

相当于容斥掉一整段全都是\(j\)的长度过于长的方案。
那么发现\(a_i\)相同的\(i\)可以一起转移,复杂度就变成\(O(n^2)\)的了。

6.

相当于求出\(nk\)个数中选择\(x\)个数(\(x\ equiv\ r(mod\ k)\)),的方案。
\(dp[i][j]\)\(i\)个数中选了\(x\)个数,满足\(x\ equiv j(mod\ k)\)的方案数。
发现可以用矩阵优化这个\(dp\),那么矩阵快速幂一下就可以了。

7.

这个感觉是挺常见的计数题的。
对于\(k=1\),\(ans=n\)
如果\(k>1\)
我们考虑一个长度为\(l\)的路径,那么其对答案的贡献是\(\binom{l-2}{k-2}\)
这样我们先求一下数上长度为\(i\)的方案数,点分治+\(FFT\)就可以了,设其生成函数为\(G(x)=\sum\limits_{i=1}^{n}g(i)x^i\)
那么我们设答案的生成函数是\(F(x)=\sum\limits_{i=1}^{n}f(i)x^i\)
这样就有\(f(i)=\sum\limits_{j=i}^{n}g(j)\binom{j-2}{i-2}\)
拆一下发现是卷积形式。
再做一次\(FFT\)就可以了。

posted @ 2020-04-19 11:47  Lrefrain  阅读(224)  评论(0编辑  收藏  举报