HDU-6801 2020HDU多校第三场T11 (生成函数)
HDU-6801 2020HDU多校第三场T11 (生成函数)
题解又给式子不解释了。。
设未被选中的概率 \(q=1-p\)
设 \(a_i\) 为 \(c\) 号点被选中前有 \(i\) 个点被选中的概率,它的普通生成函数为 \(A(x)\)
考虑枚举 \(c\) 在第 \(i\) 次被访问到时被选中
则 \(c\) 前面的 \(c-1\) 个点在转的过程中被访问了 \(i\) 次,后面的 \(n-c\) 个点被访问了 \(i-1\) 次(可能在没有经过这么多次时就已经被删掉了,但是不影响概率的计算),因此可以简单考虑这两种点在 \(c\) 之前被选中的概率
得到一个 \(A(x)\) 的表示
\(\begin{aligned} A(x)=\sum_{i=1}^{\infty}p\cdot q^{i-1}\cdot (q^i+(1-q^i)x)^{c-1}\cdot (q^{i-1}+(1-q^{i-1}x))^{n-c}\end{aligned}\)
也即题解中的式子
\(\begin{aligned} A(x)=\sum_{i=0}^{\infty}p\cdot q^i\cdot (q^{i+1}+(1-q^{i+1})x)^{c-1}\cdot (q^i+(1-q^ix))^{n-c}\end{aligned}\)
然后是暴力展开
\(\begin{aligned} A(x)=\sum_{i=0}^{\infty}p\cdot q^i\cdot (q^{i+1}(1-x)+x)^{c-1}\cdot (q^i(1-x)+x)^{n-c}\end{aligned}\)
\(\begin{aligned} A(x)=\sum_{i=0}^{\infty}p\cdot q^i\cdot (\sum_{j=0}^{c-1}C(c-1,j)\cdot q^{(i+1)j}(1-x)^jx^{c-1-j})\cdot (\sum_{k=0}^{n-c}C(n-c,k)\cdot q^{ik}(1-x)^kx^{n-c-k})\end{aligned}\)
\(\begin{aligned} A(x)=\sum_{i=0}^{\infty}p\cdot q^i\cdot \sum_{j=0}^{c-1}\sum_{k=0}^{n-c} C(c-1,j)\cdot C(n-c,k)\cdot q^{(i+1)j+ik}(1-x)^{j+k}x^{n-j-k-1}\end{aligned}\)
这个式子极其反人类,把 \(i\) 换到右边化掉
\(\begin{aligned} A(x)=\sum_{j=0}^{c-1}\sum_{k=0}^{n-c} C(c-1,j)\cdot C(n-c,k)\cdot (1-x)^{j+k}x^{n-j-k-1}\cdot \sum_{i=0}^{\infty}p\cdot q^i q^{(i+1)j+ik}\end{aligned}\)
右边是一个收敛的无穷等比数列
\(\begin{aligned} A(x)=\sum_{j=0}^{c-1}\sum_{k=0}^{n-c} C(c-1,j)\cdot C(n-c,k)\cdot (1-x)^{j+k}x^{n-j-k-1}\cdot \frac{pq^j}{1-q^{j+k+1}}\end{aligned}\)
\(\begin{aligned} A(x)=\sum_{j=0}^{c-1}\sum_{k=0}^{n-c} C(c-1,j)\cdot C(n-c,k)\cdot x^{n-j-k-1}\frac{pq^j}{1-q^{j+k+1}}\cdot (\sum_{i=0}^{j+k} C(j+k,i) \cdot (-x)^i)\end{aligned}\)
虽然有三个循环,但是很显然可以先对于 \(j,k\) 进行一次卷积,然后再对于 \(j+k,-i\) 进行一次卷积得到
Code:
1 |
|
实际跑两次卷积,写得丑几乎就是顶着时限过去的。。