这题求概率,不求中间过程,是一道概率动态规划。
基本思路
不难想到,既然求概率,所以
d
p
i
,
j
,
k
dp_{i,j,k}
dpi,j,k 表示前
i
i
i 天赢了
j
j
j 场,剩余容量为
k
k
k 的概率,状态转移方程就是:
d
p
i
,
j
,
k
=
d
p
i
−
1
,
j
,
k
×
(
1
−
p
i
)
+
d
p
i
−
1
,
j
−
1
,
k
−
a
i
×
p
dp_{i,j,k}=dp_{i-1,j,k}\times(1-p_i)+dp_{i-1,j-1,k-a_i}\times p
dpi,j,k=dpi−1,j,k×(1−pi)+dpi−1,j−1,k−ai×p
我们可以优化, k k k 看起来很大,但他与状态转移方程的系数无关,所以最后答案相当于可以求 ∑ i = l n ⋅ ∑ j = l 200 ⋅ d p n , i , j \sum_{i=l}^n\cdot \sum_{j=l}^{200}\cdot dp_{n,i,j} ∑i=ln⋅∑j=l200⋅dpn,i,j。
时间复杂度 O ( n 3 ) \mathrm{O(n^3)} O(n3)。
优化
既然时间复杂度这么高,那么我们可以一下优化:
- 获得后面的容积,再得到物品。
- 将容积增大 200 200 200,增至 [ 0 , 400 ] [0,400] [0,400]。
- 取 d p i , j , k dp_{i,j,k} dpi,j,k 的值可取精确,只取变大后的后 200 200 200 个,也就是 [ 200 , 400 ] [200,400] [200,400]。