[ABC154D] Dice in Line题解
AT_abc154_d [ABC154D] Dice in Line
题目描述
给出 NNN 个骰子,我们同时投掷 KKK 个连续骰子。求出可能的最大数学期望值。
输入格式
第一行两个数,NNN 和 KKK,含义在描述中给出
第二行 NNN 个数,p1…pNp_1 \ldots p_Np1…pN,代表每一个骰子的面数
输出格式
一行一个数,代表最大的数学期望值
输入输出样例 #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}10−6就会被评判对
思路
考虑连续一段长为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;
}

浙公网安备 33010602011771号