Dice in Line

题目链接
这题目题意理解了之后基本就很容易了。
题目大意:首先第一句话想表达的意思就是,有n个骰子。pi是pi面的骰子(由1,2…,pi组成)。第二句话表达的意思就是求连续k个相邻的骰子期望的最大和。
对于骰子期望:假设为一个6面骰,期望就为(1+2+3+4+5+6)/6。所以对于一个pi我们有(1+2+…+pi)/pi=[(1+pi)/2*pi]/pi=(1+pi)/2。(不是吧,等差数列你都看不懂吗?)

思路:用前缀和去记忆前i个骰子期望相加。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<iostream>
#include<cmath>
#include<queue>
#include<vector>
#define IOS ios::sync_with_stdio(false);cin.tie();cout.tie(0)

using namespace std;
typedef pair<int,int> pll;
typedef long long ll;
const int N=2e5+100;
const int maxn=110;
const int M=100003;

map<string,int> q;
bool st[N];
double sum[N];

int main()
{
    IOS;
    int n,k;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        double x;
        cin>>x;
        sum[i]=sum[i-1]+(x+1)*0.5;
    }

    double ans=0;
    for(int i=k;i<=n;i++)
    {
        ans=max(ans,sum[i]-sum[i-k]);
    }
    printf("%.7lf",ans);//(这里或许有人问为什么不直接输出,因为题目明确说了与正确答案误差不超过1e-6则为正确,所以就保留6位以上的小数)
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值