洛谷 #1654. OSU!
阿新 • • 發佈:2018-11-26
題意
為什麼不能叫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;
}