bzoj 4318 OSU! - 动态规划 - 概率与期望
2017-12-17 13:20
302 查看
Description
osu 是一款群众喜闻乐见的休闲软件。我们可以把osu的规则简化与改编成以下的样子:
一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的01串。在这个串中连续的 X个1可以贡献X^3 的分数,这x个1不能被其他连续的1所包含(也就是极长的一串1,具体见样例解释)
现在给出n,以及每个操作的成功率,请你输出期望分数,输出四舍五入后保留1位小数。
Input
第一行有一个正整数n,表示操作个数。接下去n行每行有一个[0,1]之间的实数,表示每个操作的成功率。Output
只有一个实数,表示答案。答案四舍五入后保留1位小数。Sample Input
30.5
0.5
0.5
Sample Output
6.0HINT
【样例说明】000分数为0,001分数为1,010分数为1,100分数为1,101分数为2,110分数为8,011分数为8,111分数为27,总和为48,期望为48/8=6.0
N<=100000
题目大意 已知一个01串的第i位为1的概率为\( p_{i} \),出现x个连续的1,则对分数有\( x^{3} \)的贡献(不能重复进行贡献,例如11的分数为8,而不是10),问期望的分数。
根据dp的常用套路,会考虑设\( f[i][j] \)表示考虑到第i位,末尾有j个1的期望分数。但是这里是求期望,期望是有线性的,所以直接考虑期望增加的分数。
故用\( f[i] \)表示考虑到第i位的期望。
1.如果第i位为0,则什么贡献都不会产生
2.如果第i位为1,然后考虑增加的贡献,设\( x \)表示末尾有x个1,则有\( \left(x + 1 \right )^{3}-x^{3} \),化简得到\( 3x^{2} + 3x + 1 \)
设\( p \)表示\( p_{i} \),考虑维护期望的x的值,这个很好想,直接\( E_{x}' = p\left(E_{x} + 1 \right ) \)。
关键是如何维护\( x^{2} \)(科普,正确的对平方的期望的理解是 长度的平方 的期望,显然它不等于 期望的长度 的平方)
考虑它的定义,设\( P_{i} \)表示上一位结尾有i个1的概率。根据期望的定义我们有:
\( E_{x^{2}} = \sum_{k = 0}^{i - 1}k^{2}P_{k}=0^{2}P_{0}+1^{2}P_{1}+\cdots +\left(i - 1 \right )^{2}P_{i-1} \)
现在考虑第i位为1,于是得到了下面这个式子:
\( E_{x^{2}}' = p\left[0 + \sum_{k = 0}^{i - 1}\left ( k+1 \right )^{2}P_{k}\right] \)
用完全平方公式展开其中的平方系数:
\( E_{x^{2}}' = p\left[0 + \sum_{k = 0}^{i - 1}\left ( k^{2} + 2k +1 \right )P_{k}\right] \)
继续化简得到:
\( E_{x^{2}}' = p \left( \sum_{k = 0}^{i - 1} k^{2}P_{k} + 2\sum_{k = 0}^{i - 1}kP_{k} + \sum_{k=0}^{i-1}P_{k} \right) \)
对比\( E_{x} \)的定义式\( E_{x} = \sum_{k = 0}^{i - 1}kP_{k} \)和\( E_{x^{2}} \)的定义式,然后根据一下有关\(P_{i}\)的性质可以得到:
\( E_{x^{2}}'=p\left (E_{x^{2}} + 2E_{x} + 1 \right ) \)
然后一切就简单了。
由于\( f[i] \)等于\( f[i - 1] \)加一坨乱七八糟的东西,答案在\( f
\),所以这题根本不用数组qaq。
Code
#include <bits/stdc++.h> using namespace std; typedef bool boolean; #define ll long long int n; double p, x = 0.0, x2 = 0.0, E = 0.0; inline void solve() { scanf("%d", &n); for(int i = 1; i <= n; i++) { scanf("%lf", &p); E += (3 * (x2 + x) + 1) * p; x2 = (x2 + 2 * x + 1) * p; x = (x + 1) * p; // cerr << E << " " << x2 << " " << x << endl; } printf("%.1lf", E); } int main() { solve(); return 0; }
相关文章推荐
- BZOJ4318 OSU!(动态规划+概率期望)
- BZOJ 4318: OSU! 期望概率dp && 【BZOJ3450】【Tyvj1952】Easy 概率DP
- bzoj 4318 OSU 概率期望dp
- bzoj 4318: OSU!|概率与期望|dp
- bzoj 4318 OSU 概率期望dp
- bzoj4318 OSU!(期望概率DP,期望的线性性)
- BZOJ - 4318: OSU! (期望DP&Attention)
- bzoj-4318 OSU! 【数学期望】
- BZOJ 4318 OSU!(期望DP )
- bzoj 4318 OSU! 概率dp
- bzoj 4318 OSU 期望dp
- bzoj 4008 亚瑟王 - 动态规划 - 概率与期望
- bzoj 1419 Red is good - 动态规划 - 概率与期望
- 【BZOJ4318】OSU! 期望DP
- bzoj 4318: OSU!(概率DP)
- BZOJ 4318 OSU! ——期望DP
- BZOJ 4318: OSU! 期望dp
- bzoj 4318: OSU!【期望dp】
- 【bzoj4318】【OSU!】期望dp——维护多个期望值递推
- bzoj 4318 OSU! 期望dp