[UER #6]逃跑
Posted StaroForgin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[UER #6]逃跑相关的知识,希望对你有一定的参考价值。
逃跑
题解
首先根据期望的线性性,我们可以将方差的期望转化成平方的期望减去期望的平方。
E
(
(
x
−
E
(
x
)
)
2
)
=
E
(
x
2
−
2
x
E
(
x
)
+
E
2
(
x
)
)
=
E
(
x
2
)
−
2
E
(
x
)
E
(
x
)
+
E
2
(
x
)
=
E
(
x
2
)
−
E
2
(
x
)
E((x-E(x))^2)=E(x^2-2xE(x)+E^2(x))=E(x^2)-2E(x)E(x)+E^2(x)=E(x^2)-E^2(x)
E((x−E(x))2)=E(x2−2xE(x)+E2(x))=E(x2)−2E(x)E(x)+E2(x)=E(x2)−E2(x)所以我们的目的是算出我们的
E
(
x
)
E(x)
E(x)和
E
(
x
2
)
E(x^2)
E(x2),这两者可以通过
d
p
dp
dp求解。
首先考虑如何求解
E
(
x
)
E(x)
E(x)。
我们可以先算出可以走到一个节点的方案数,记走
i
i
i步走到节点
(
x
,
y
)
(x,y)
(x,y)有
g
(
i
,
x
,
y
)
g(i,x,y)
g(i,x,y)种方案,显然可以递推求出。
但这些方案并不能保证我们是第一次走到节点
(
x
,
y
)
(x,y)
(x,y),也就是说这样的话一个节点有可能被统计多次,不妨记录
f
(
i
,
x
,
y
)
f(i,x,y)
f(i,x,y)表示在第
i
i
i步第一次走到节点
(
x
,
y
)
(x,y)
(x,y)的方案数。
对于
f
f
f我们可以通过容斥求出,
f
(
i
,
x
,
y
)
=
g
(
i
,
x
,
y
)
−
∑
j
=
0
i
−
1
f
(
j
,
x
,
y
)
g
(
i
−
j
,
0
,
0
)
f(i,x,y)=g(i,x,y)-\\sum_j=0^i-1f(j,x,y)g(i-j,0,0)
f(i,x,y)=g(i,x,y)−j=0∑i−1f(j,x,y)g(i−j,0,0)需要减去先前已经到过该点的方案。
求出
f
(
i
,
x
,
y
)
f(i,x,y)
f(i,x,y),之后的方案无论怎么走都显然已经到过
(
x
,
y
)
(x,y)
(x,y)了。
实际上该
f
(
i
,
x
,
y
)
f(i,x,y)
f(i,x,y)对我们答案的贡献为
(
w
1
+
w
2
+
w
3
+
w
4
)
n
−
i
f
(
i
,
x
,
y
)
(w_1+w_2+w_3+w_4)^n-if(i,x,y)
(w1+w2+w3+w4)n−if(i,x,y),将所有
f
(
i
,
x
,
y
)
f(i,x,y)
f(i,x,y)的贡献加起来就行了。
但我们的
E
(
x
2
)
E(x^2)
E(x2)又该怎么算呢?
显然有组合恒等式
x
2
=
2
(
x
2
)
+
x
x^2=2\\binomx2+x
x2=2(2x)+x
所以
E
(
x
2
)
=
2
E
(
(
x
2
)
)
+
E
(
x
)
E(x^2)=2E(\\binomx2)+E(x)
E(x2)=2E((2x))+E(x),其中
E
(
(
x
2
)
)
E(\\binomx2)
E((2x))可以表示成在路径经过两个不同点的期望对数。
这显然也可以通过
d
p
dp
dp求解。
我们定义
q
(
i
,
x
,
y
)
q(i,x,y)
q(i,x,y)表示我们从
(
0
,
0
)
(0,0)
(0,0)出发走
i
i
i步又回到
(
0
,
0
)
(0,0)
(0,0)但路途中又经过点
(
x
,
y
)
(x,y)
(x,y)的方案数。
这显然可以通过我们的
f
f
f与
g
g
g求出。
q
(
i
,
x
,
y
)
=
∑
j
=
0
i
−
1
g
(
i
,
x
,
y
)
f
(
i
−
j
,
−
x
,
−
y
)
q(i,x,y)=\\sum_j=0^i-1g(i,x,y)f(i-j,-x,-y)
q(i,x,y)=j=0∑i−1g(i,x,y)f(i−j,−x,−y)(如果这里使用
g
g
g与
f
f
f转移的话一条经过
(
x
,
y
)
(x,y)
(x,y)的路径不会被统计多次吗,个人对这里存疑。)
我们再定义
p
(
i
,
x
,
y
)
p(i,x,y)
p(i,x,y)表示我们走
k
k
k步到达某点后再走
i
−
k
i-k
i−k步,移动位置
(
x
,
y
)
(x,y)
(x,y)第一次到达某点的方案数。
显然,
p
p
p可以通过容斥求出。
p
(
i
,
x
,
y
)
=
∑
j
=
0
i
−
1
(
∑
x
′
,
y
′
f
(
j
,
x
′
,
y
′
)
)
(
g
(
i
−
j
,
x
,
y
)
−
q
(
i
−
j
,
−
x
,
−
y
)
)
−
p
(
j
,
x
,
y
)
(
g
(
i
−
j
,
0
,
0
)
−
q
(
i
−
j
,
−
x
,
−
y
)
)
p(i,x,y)=\\sum_j=0^i-1(\\sum_x',y'f(j,x',y'))(g(i-j,x,y)-q(i-j,-x,-y))-p(j,x,y)(g(i-j,0,0)-q(i-j,-x,-y))
p(i,x,y)=j=0∑i−1(x′,y′∑f(j,x′,y′))(g(i−j,x,y)−q(i−j,以上是关于[UER #6]逃跑的主要内容,如果未能解决你的问题,请参考以下文章