P1654 OSU!(期望dp)

Posted SSL_LKJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1654 OSU!(期望dp)相关的知识,希望对你有一定的参考价值。

P1654 OSU!

题目传送门

解题思路

期望dp

这一题和2021.8.12【提高B组模拟4】T1 幻象(期望dp)有点类似

转移方程
f [ i ] = f [ i − 1 ] + ( 1.0 ∗ a [ i − 1 ] ∗ 3 + b [ i − 1 ] ∗ 3 + 1 ) ∗ x f[i]=f[i-1]+(1.0*a[i-1]*3+b[i-1]*3+1)*x f[i]=f[i1]+(1.0a[i1]3+b[i1]3+1)x

式子是用了完全平方公式化简了的

a的预处理 a [ i ] = ( 1.0 ∗ a [ i − 1 ] + 1 ) ∗ x a[i]=(1.0*a[i-1]+1)*x a[i]=(1.0a[i1]+1)x

b的预处理 b [ i ] = ( 1.0 ∗ b [ i − 1 ] + 2 ∗ a [ i − 1 ] + 1 ) ∗ x b[i]=(1.0*b[i-1]+2*a[i-1]+1)*x b[i]=(1.0b[i1]+2a[i1]+1)x

AC代码

#include<cstdio>
using namespace std;
int n;
double a[1000005],b[1000005],f[1000005];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		double x;
		scanf("%lf",&x);
		a[i]=(1.0*a[i-1]+1)*x;//预处理
		b[i]=(1.0*b[i-1]+2*a[i-1]+1)*x;
		f[i]=f[i-1]+(1.0*a[i-1]*3+b[i-1]*3+1)*x;//期望dp
	}
	printf("%.1lf",f[n]);
	return 0;
}
 

谢谢

以上是关于P1654 OSU!(期望dp)的主要内容,如果未能解决你的问题,请参考以下文章

luogu P1654 OSU! 概率dp

p1654 OSU!

题解 P1654 OSU!

Luogu P1654 OSU!

bzoj 4318 OSU! —— 期望DP

BZOJ4318: OSU! 期望DP