Educational Codeforces Round 21B. Average Sleep Time

来源:互联网 发布:2017人工智能龙头股 编辑:程序博客网 时间:2024/04/30 03:20
题目链接:http://codeforces.com/contest/808/problem/B
题目描述:给n个睡眠数据,认为连续k个数据作为一周的天数,所以需要考虑n-k+1周,求所有周的平均睡眠时间。
解题思路:简单模拟即可。我的处理方法是先计算前k个数据的和。以后滑块的时候只需用sum减去这k个数据第一个数据加上最后一个数据的下一个数据即可。这样可以省了大量的计算时间,遍历一遍0(n)即可求解。

代码如下:

#include <iostream>#include <cstdio>#include <algorithm>#include <sstream>#include <cstdlib>#include <cstring>#include <cmath>#include <iomanip>using namespace std;const int maxn=200000+10;int slpt[maxn];int main(){    int n,k;    scanf("%d %d",&n,&k);    double sum=0,tot_sum=0;    for(int i=0;i<n;i++)    {        scanf("%d",&slpt[i]);    }    for(int i=0;i<k;i++)    {        sum+=slpt[i];    }    tot_sum+=sum/(n-k+1);    for(int i=1;i<n-k+1;i++)    {        sum-=slpt[i-1];        sum+=slpt[i+k-1];        tot_sum+=sum/(n-k+1);    }    cout << fixed << setiosflags(ios::left) << setprecision(10) << tot_sum << endl;    return 0;}


原创粉丝点击