hdu5753找规律,期望

官方题解:根据期望的线性性,我们可以分开考虑每个位置对答案的贡献。

可以发现当ii不在两边的时候和两端有六种大小关系,其中有两种是对答案有贡献的。

那么对答案的贡献就是ci/3

在两端的话有两种大小关系,其中有一种对答案有贡献。

那么对答案的贡献就是ci/2

复杂度是O(n)O(n)。

注意特判n=1的情况。

一开始并没有思路,列出了1—5的情况,发现了规律,c[i]的贡献次数,有规律可循,3的时候是3 2 3,4的时候是12 8 8 12,5的时候是60 40 40 40 60,再分别除以n!,答案也是1/3*c[0]+1/2*(c[1]……c[n-1])+1/3*c[n];

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    int n;
    double c[1005];
    while(cin>>n)
    {
        double sum=0.0;
        for(int i=0;i<n;i++)
        scanf("%lf",&c[i]);
        if(n==1)
        printf("%.6lf\n",c[0]);
        else if(n==2)
        printf("%.6lf\n",(c[0]+c[1])/2);
        else
        {
            sum+=1.0*c[0]/2;
            for(int i=1;i<n-1;i++)
            {
                sum+=1.0/3*c[i];
            }
            sum+=1.0*c[n-1]/2;
            printf("%.6lf\n",sum);
        }

    }
    return 0;
}
    原文作者:B树
    原文地址: https://blog.csdn.net/aonaigayiximasi/article/details/52038533
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞