【BZOJ】【P4318】【OSU!】【题解】【期望dp】

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4318

那个"立方"丢掉了……看了样例才看懂……

考虑增量维护答案,每增加一个维护期望长度,期望长度^2,期望得分就可以了

和3450如出一辙

Code:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
double f[maxn],g[maxn],g2[maxn];
int main(){
	int n;scanf("%d",&n);
	for(int i=1;i<=n;i++){
		double x;scanf("%lf",&x);
		g[i]=(g[i-1]+1)*x;
        g2[i]=(g2[i-1]+2*g[i-1]+1)*x;
		f[i]=f[i-1]+(3*g2[i-1]+3*g[i-1]+1)*x;
	}printf("%.1lf\n",f[n]);
	return 0;
}


你可能感兴趣的:(【BZOJ】【P4318】【OSU!】【题解】【期望dp】)