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[i−1]+(1.0∗a[i−1]∗3+b[i−1]∗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.0∗a[i−1]+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.0∗b[i−1]+2∗a[i−1]+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)的主要内容,如果未能解决你的问题,请参考以下文章