题目
首先我们来考虑一个简化的问题:每个位置有a种方案选1,b种方案选0,求x^3的总和.
那么由:
x
3
=
(
x
−
1
)
3
+
3
(
x
−
1
)
2
+
3
(
x
−
1
)
+
1
x^3 = (x-1)^3 + 3(x-1)^2+3(x-1)+1
x3=(x−1)3+3(x−1)2+3(x−1)+1
再统计一下
3
(
x
−
1
)
2
+
3
(
x
−
1
)
+
1
3(x-1)^2+3(x-1)+1
3(x−1)2+3(x−1)+1
就行了。
那么期望就是除上一个总方案数。。。。。。
一遇期望就降智。
你也可以说根据期望的线性性,你可以拿
E
(
x
3
)
=
E
(
(
x
−
1
)
3
)
+
E
(
3
(
x
−
1
)
2
)
+
E
(
3
(
x
−
1
)
)
+
1
E(x^3) = E((x-1)^3) + E(3(x-1)^2)+E(3(x-1))+1
E(x3)=E((x−1)3)+E(3(x−1)2)+E(3(x−1))+1
直接算就是。
AC Code:
#include<bits/stdc++.h>
using namespace std;
int n;
double E[2][3];
int main()
{
scanf("%d",&n);
int now = 1 , pre = 0;
for(int i=1;i<=n;i++,swap(now,pre))
{
double p;
scanf("%lf",&p);
E[now][2] = E[pre][2] + p * (3 * E[pre][1] + 3 * E[pre][0] + 1);
E[now][1] = p * (E[pre][1] + 2 * E[pre][0] + 1);
E[now][0] = p * (E[pre][0] + 1);
}
printf("%.1lf\n",E[pre][2]);
}