首页 > 代码库 > bzoj 1010,1011

bzoj 1010,1011

1011:

+ View Code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
const int maxN = 100001;
const double eps = 1e-7;
 
int n;
double m[maxN],sum[maxN];
double a;
 
int main(){
    //freopen("cs.in","r",stdin);
    scanf("%d%lf",&n,&a);
    memset(sum,0,sizeof(sum));
    for(register int i = 1; i <= n; i++){
        scanf("%lf",&m[i]);
        sum[i] = sum[i-1] + m[i];
        int maxn = (int)floor(a*i+eps),len;
        double ans = 0;
        while(maxn){
            len = (int)floor((i-maxn)*0.05)+1;
            if(maxn < len) len = maxn;
            ans += (double)(sum[maxn]-sum[maxn-len])/(i-maxn+i-maxn+len-1)*2;
            maxn -= len;
        }
        printf("%.6lf\n",ans*m[i]);
    }
    return 0;
}