Educational Codeforces Round 21B. Average Sleep Time

題目描述:給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;
}


發佈了46 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章