zoukankan      html  css  js  c++  java
  • Average Sleep Time CodeForces

    It's been almost a week since Polycarp couldn't get rid of insomnia. And as you may already know, one week in Berland lasts k days!

    When Polycarp went to a doctor with his problem, the doctor asked him about his sleeping schedule (more specifically, the average amount of hours of sleep per week). Luckily, Polycarp kept records of sleep times for the last n days. So now he has a sequence a1, a2, ..., an, where ai is the sleep time on the i-th day.

    The number of records is so large that Polycarp is unable to calculate the average value by himself. Thus he is asking you to help him with the calculations. To get the average Polycarp is going to consider k consecutive days as a week. So there will be n - k + 1 weeks to take into consideration. For example, if k = 2, n = 3 and a = [3, 4, 7], then the result is .

    You should write a program which will calculate average sleep times of Polycarp over all weeks.

    Input

    The first line contains two integer numbers n and k (1 ≤ k ≤ n ≤ 2·105).

    The second line contains n integer numbers a1, a2, ..., an (1 ≤ ai ≤ 105).

    Output

    Output average sleeping time over all weeks.

    The answer is considered to be correct if its absolute or relative error does not exceed 10 - 6. In particular, it is enough to output real number with at least 6 digits after the decimal point.

    Examples

    Input
    3 2
    3 4 7
    Output
    9.0000000000
    Input
    1 1
    10
    Output
    10.0000000000
    Input
    8 2
    1 2 4 100000 123 456 789 1
    Output
    28964.2857142857

    Note

    In the third example there are n - k + 1 = 7 weeks, so the answer is sums of all weeks divided by 7.

    题目链接:CodeForces - 808B 

    题意:给你一个含有N个数的数组,一个长度K,

    让你求从1~k,到n-k+1~n这n-k+1个区间的平均值。

    思路:裸的前缀和。

    我的AC代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <queue>
    #include <stack>
    #include <map>
    #include <set>
    #include <vector>
    #define sz(a) int(a.size())
    #define all(a) a.begin(), a.end()
    #define rep(i,x,n) for(int i=x;i<n;i++)
    #define repd(i,x,n) for(int i=x;i<=n;i++)
    #define pii pair<int,int>
    #define pll pair<long long ,long long>
    #define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
    #define MS0(X) memset((X), 0, sizeof((X)))
    #define MSC0(X) memset((X), '', sizeof((X)))
    #define pb push_back
    #define mp make_pair
    #define fi first
    #define se second
    #define eps 1e-6
    #define gg(x) getInt(&x)
    using namespace std;
    typedef long long ll;
    inline void getInt(ll* p);
    const int maxn=1000010;
    const int inf=0x3f3f3f3f;
    /*** TEMPLATE CODE * * STARTS HERE ***/
    ll sum[maxn];
    ll a[maxn];
    ll n,k;
    int main()
    {
        gg(n);
        gg(k);
        repd(i,1,n)
        {
            gg(a[i]);
            sum[i]=sum[i-1]+a[i];
        }
        ll cnt=0ll;
        repd(i,k,n)
        {
             cnt+=(sum[i]-sum[i-k]);
        }
        double ans=1.000*cnt/(1.0*(n-k+1));
        printf("%.10lf
    ",ans );
        return 0;
    }
    
    inline void getInt(ll* p) {
        char ch;
        do {
            ch = getchar();
        } while (ch == ' ' || ch == '
    ');
        if (ch == '-') {
            *p = -(getchar() - '0');
            while ((ch = getchar()) >= '0' && ch <= '9') {
                *p = *p * 10 - ch + '0';
            }
        }
        else {
            *p = ch - '0';
            while ((ch = getchar()) >= '0' && ch <= '9') {
                *p = *p * 10 + ch - '0';
            }
        }
    }
    本博客为本人原创,如需转载,请必须声明博客的源地址。 本人博客地址为:www.cnblogs.com/qieqiemin/ 希望所写的文章对您有帮助。
  • 相关阅读:
    36、【opencv入门】运动物体检测(2)
    二叉树数
    多边形的三角划分
    乘积最大
    加分二叉树
    c++ 装箱问题
    生物基元问题
    一般性的最少硬币组成问题
    打包
    挤牛奶
  • 原文地址:https://www.cnblogs.com/qieqiemin/p/10274618.html
Copyright © 2011-2022 走看看