题解 【UER #6】逃跑
Description
妹滋滋从 \((0,0)\) 开始,每天可以往上下左右四个方向中的一个方向移动一个单位的距离。每天随机选择一个方向走,上下左右方向的权值分别是 \(w_1,w_2,w_3,w_4\) 走每个方向的概率和他的权值成正比。询问 \(n\) 天后经过不同位置个数的方差 \(V\times(w_1+w_2+w_3+w_4)^n\) 对 \(998244353\) 取模后的值。
Solution
首先,对于离散随机变量 \(X_1,X_2\dots X_n\) ,设 \(X\) 的方差为 \(D(X)\),则有
那么方差就等于平方的期望减期望的平方,那么我们现在就要求这两项。
对一次和的求解
首先考虑每个点对答案的贡献,必定是在第一次经过时产生贡献。
设 \(f[i]\) 表示第一次经过 \(i\) 步后到达格子的方案数,注意我们不关心这个格子是哪一个。
由于外层乘了总方案,设 \(sum=w_1+w_2+w_3+w_4\),那么走 \(i\) 步后的总方案就是 \(sum^i\)。
考虑容斥,所有不合法的方案都是在 \([0,i-1]\) 中走到了 \(i\) 步的位置,并且用剩下的时间再走了回来。
设在第 \(j\) 步走到 \(i\),那么就用 \(j-i\) 步走回来,方案数可以预处理,设为 \(C_{j-i}\)。
那么就有 \(f[i]=sum^i-\sum_{j=0}^{i-1}f[j]C_{j-i}\),总和为 \(\sum_{i=0}^nf[i]\times sum^{n-i}\)。
对二次和的求解
对于一种方案展开:\(E((s_i+s_j+\dots)^2)=E^2(s_i)+E^2(s_j)+2E(s_is_j)\dots\),其中 \(s_i\) 表示第 \(i\) 步到达的格子是否是首次到达的。
那么可以 \(dp\),设 \(g[k][x][y]\) 表示走了 \(k\) 步,其中纵方向比走了 \(i\) 步时多走的状况是 \(x\),横方向多走的状况是 \(y\) 的方案数。也就是 \(i-k\) 步走出了一个 \((x,y)\) 的向量。
其中走 \(i\) 步到的地方是首次经过的,那么可以使用 \(f[i]\)。
用 \(j\) 步走一个固定向量 \((x,y)\) 的方案数可以递推出来,设为 \(h[j][x][y]\)。(其中 \(C_i=h[i][0][0]\))。
有:
但是这样会算重,算重的部分就是 \(j\) 步后到的格子(设为 \(P\))被经过两次。
这里分类讨论一下,看是在走 \(i\) 步到的格子 \(Q\) 前被经过还是 \(Q\) 后:
-
先经过了 \(P\),再绕了个圈经过 \(P\)。这种情况在绕圈的时候不能经过 \(Q\),方案数为 \(g[j][x][y]\times (C_{k-j}-W[k-j][-x][-y])\)。
-
先经过 \(P\),再经过 \(Q\),再经过 \(P\) 。这样就是 \(f[j]\times W[k-j][x][y]\)
其中 \(W[i][x][y]\) 表示从出发点走了 \(i\) 步绕回来,并且经过了和出发点呈 \((x,y)\) 向量的点。
最后的问题就是求 \(W\) 了。
枚举走了 \(j\) 步后形成 \((x,y)\) 的向量,那么剩下 \(i-j\) 步就形成了 \((-x,-y)\) 的向量,但是不能经过出发点。
所以
其中 \(dp\) 数组表示上方斜体的方案,求解只需要用 \(h\) 减去过 \((0,0)\) 的圈就行了。
最后统计答案:
至此,本题得到了完美的解决。