BZOJ 4318 OSU!(期望的线性性)

题目
首先我们来考虑一个简化的问题:每个位置有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=(x1)3+3(x1)2+3(x1)+1
再统计一下 3 ( x − 1 ) 2 + 3 ( x − 1 ) + 1 3(x-1)^2+3(x-1)+1 3(x1)2+3(x1)+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((x1)3)+E(3(x1)2)+E(3(x1))+1
直接算就是。

AC Code:

#include
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]);
}

你可能感兴趣的:(DP,数论,期望)