Loading

P1654 OSU!

P1654 OSU!

链接

有:\((x+1)^3=x^3+3x^2+3x+1\)

注意,\(len\) 有两种改变方式:\(0\)\(len+1\)\(ans_1\) 有两种改变方式:\(ans_1+2\times len+1\)\(0\)

\(ans_2\) 也有两种:\(ans_2+0\)\(ans_2+3\times ans_2+3\times len+1\)

注意,这里 \(ans_2\) 需要累积答案所以不太一样。而 \(ans_1\) 不需要累计答案。

#include<bits/stdc++.h>
#define dd double
#define ld long double
#define ll long long
#define uint unsigned int
#define ull unsigned long long
#define N 100010
#define M number
using namespace std;

const int INF=0x3f3f3f3f;

template<typename T> inline void read(T &x) {
    x=0; int f=1;
    char c=getchar();
    for(;!isdigit(c);c=getchar()) if(c == '-') f=-f;
    for(;isdigit(c);c=getchar()) x=x*10+c-'0';
    x*=f;
}

int n;
dd p[N],ans1,ans2;

int main(){
    read(n);for(int i=1;i<=n;i++) scanf("%lf",&p[i]);
    dd len=0;
    for(int i=1;i<=n;i++){
        ans2+=p[i]*(3*ans1+3*len+1);
        ans1=p[i]*(ans1+2*len+1);
        len=p[i]*(len+1);
    }
    printf("%0.1lf\n",ans2);
    return 0;
}

posted @ 2021-07-12 14:43  hyl天梦  阅读(37)  评论(0编辑  收藏  举报