版权声明:转载请注明出处 https://blog.csdn.net/qq_41593522/article/details/84501935
题意
为什么不能叫UNO
每个状态为0/1,问连续1的长度的立方和的期望值
题解
期望Dp,维护1维、2维、3维期望值
调试记录
3维要算上为0的期望
#include <cstdio>
#define maxn 100005
using namespace std;
double cnt[4][maxn], chance[maxn];
int n;
int main(){
scanf("%d", &n);
for (int i = 1; i <= n; i++) scanf("%lf", &chance[i]);
for (int i = 1; i <= n; i++){
cnt[1][i] = (cnt[1][i - 1] + 1) * chance[i];
cnt[2][i] = (cnt[2][i - 1] + 2 * cnt[1][i - 1] + 1) * chance[i];
cnt[3][i] = (cnt[3][i - 1] + 3 * cnt[2][i - 1] + 3 * cnt[1][i - 1] + 1) * chance[i] + (1 - chance[i]) * cnt[3][i - 1];
}
printf("%.1lf\n", cnt[3][n]);
return 0;
}