1. 程式人生 > >洛谷 #1654. OSU!

洛谷 #1654. OSU!

題意

為什麼不能叫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; }