洛谷 #1654. OSU!

版权声明:转载请注明出处 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;
}

猜你喜欢

转载自blog.csdn.net/qq_41593522/article/details/84501935