P1654 OSU!

P1654 OSU!

链接

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

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

(ans_2) 也有两种:(ans_2+0)(ans_2+3 imes ans_2+3 imes 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
",ans2);
    return 0;
}

原文地址:https://www.cnblogs.com/TianMeng-hyl/p/15001955.html