根据期望的线性性质,我们可以把本题的期望写成
∑
i
=
1
n
t
p
[
i
]
∗
d
[
i
]
\sum_{i=1}^ntp[i] * d[i]
i=1∑ntp[i]∗d[i]
即每个数的实际可能被使用的概率乘上贡献,于是这题我们就把问题转化为如何求
t
p
[
i
]
tp[i]
tp[i],首先我们考虑第一张牌,
t
p
[
1
]
=
1
−
(
1
−
p
[
i
]
)
r
tp[1] = 1-(1 - p[i])^r
tp[1]=1−(1−p[i])r,这个就是第一张牌始终憋着不出的概率,然后我们考虑第二张牌,我们发现在考虑第二张牌的时候,需要考虑第一张牌,没法算出
t
p
[
2
]
tp[2]
tp[2],所以我们考虑引入
d
p
dp
dp,我们设
f
[
i
]
[
j
]
f[i][j]
f[i][j]表示所有
r
r
r轮中对于前
i
i
i张牌打出
j
j
j张的概率,所以对于第
i
i
i张牌的实际使用概率
t
p
[
i
]
tp[i]
tp[i],我们会发现
t
p
[
i
]
=
∑
j
=
0
r
f
[
i
−
1
]
[
j
]
∗
(
1
−
(
1
−
p
[
i
]
)
r
−
j
)
tp[i] = \sum_{j=0}^rf[i - 1][j]*(1 - (1 - p[i])^{r - j})
tp[i]=j=0∑rf[i−1][j]∗(1−(1−p[i])r−j)在前
i
−
1
i - 1
i−1张牌里我们已经有
j
j
j轮是不用考虑第i张牌,对于剩下的
r
−
j
r - j
r−j轮我们考虑第
i
i
i张牌,对于所有
r
r
r轮情况求和,就是我们的
t
p
[
i
]
tp[i]
tp[i]
然后我们推一下
d
p
dp
dp方程
对于
f
[
i
]
[
j
]
f[i][j]
f[i][j]我们考虑第
i
i
i张牌在不在这
j
j
j张里
如果不在
f
[
i
]
[
j
]
=
∑
j
=
0
r
f
[
i
−
1
]
[
j
]
∗
(
1
−
p
[
i
]
)
r
−
j
f[i][j] = \sum_{j = 0}^rf[i - 1][j] * (1 - p[i])^{r - j}
f[i][j]=j=0∑rf[i−1][j]∗(1−p[i])r−j
如果在
f
[
i
]
[
j
]
=
∑
j
=
1
r
f
[
i
−
1
]
[
j
−
1
]
∗
(
1
−
(
1
−
p
[
i
]
)
r
−
j
+
1
)
f[i][j] = \sum_{j = 1}^rf[i - 1][j - 1] * (1 - (1 - p[i])^{r - j + 1})
f[i][j]=j=1∑rf[i−1][j−1]∗(1−(1−p[i])r−j+1)
HNOI2015 亚瑟王
最新推荐文章于 2021-10-07 14:03:08 发布
这篇博客探讨了如何利用概率和动态规划计算特定条件下一组卡片的期望使用概率。通过建立数学模型,将问题转化为求解每个卡片实际使用概率tp[i],并给出动态规划方程,描述了如何根据前i-1张卡片的状态计算第i张卡片的使用概率。文章深入浅出地解析了如何处理这类复杂问题。
摘要由CSDN通过智能技术生成