洛谷 #1654. OSU!

本文详细解析了一道关于连续1的长度立方和期望值的编程题目,通过一维到三维的期望动态规划方法求解,展示了如何维护不同维度的期望值并计算最终结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意

为什么不能叫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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值