[ABC154D] Dice in Line题解

AT_abc154_d [ABC154D] Dice in Line

题目描述

给出 NNN 个骰子,我们同时投掷 KKK 个连续骰子。求出可能的最大数学期望值。

输入格式

第一行两个数,NNNKKK,含义在描述中给出
第二行 NNN 个数,p1…pNp_1 \ldots p_Np1pN,代表每一个骰子的面数

输出格式

一行一个数,代表最大的数学期望值

输入输出样例 #1

输入 #1

5 3
1 2 2 4 5

输出 #1

7.000000000000

输入输出样例 #2

输入 #2

4 1
6 6 6 6

输出 #2

3.500000000000

输入输出样例 #3

输入 #3

10 4
17 13 13 12 15 20 10 13 17 11

输出 #3

32.000000000000

说明/提示

本题使用Special Judge,你的答案和数据误差小于等于10−610^{-6}106就会被评判对

思路

考虑连续一段长为k,和为s的骰子,则期望为(k+s)/2,用前缀和优化一下即可。

代码

#include<bits/stdc++.h>
using namespace std;
long long n,k,p[10005605],f[10005605],op=0;
int main(){
    cin>>n>>k;
    //n*=2;
    for(int i=1;i<=n;i++){
        cin>>p[i];
        p[i]++;
        f[i]+=p[i];
        f[i]+=f[i-1];
    }
    for(int i=k;i<=n;i++){
        op=max(op,f[i]-f[i-k]);
    }
    printf("%.10lf\n",1.00*op/2.00);
    return 0;
}
posted @ 2025-12-09 21:03  bz02_2023f2  阅读(1)  评论(0)    收藏  举报  来源