zoukankan      html  css  js  c++  java
  • BZOJ 2720 [Violet 5]列队春游 ——期望DP

    很喵的一道题(我可不是因为看了YOUSIKI的题解才变成这样的)

    $ans=sum_{x<=n}sum_{i<=n} iP(L=i)$ 其中P(x)表示视线为x的概率。

    所以只需要求出对于每个人的$sum_{i<=n} iP(L=i)$就可以了。

    然后我们转化$sum_{i<=n}P(L>=i)$ 这步很喵,大概运用的差分的思想。

    然后我们大力展开之后合并,就可以得到一堆组合数,然后考虑组合数的意义,对组合数合并,最后得出$ans=frac{n+1}{k+2}$k表示不小于每个人的人的个数。

    然后就是$Theta(n)$统计即可

    #include <map>
    #include <ctime>
    #include <cmath>
    #include <queue>
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    #define F(i,j,k) for (int i=j;i<=k;++i)
    #define D(i,j,k) for (int i=j;i>=k;--i)
     
    int n,cnt[1005],sum;
    double ans; 
     
    int main()
    {
        scanf("%d",&n); n++;
        for (int i=1,j;i<n;++i) scanf("%d",&j),cnt[j]++;
        for (int i=1;i<=1000;++i) ans+=1.0*cnt[i]*n/(n-sum),sum+=cnt[i];
        printf("%.2lf
    ",ans);
    }
    

      

  • 相关阅读:
    C++ mutex&&RWlock
    一个资源池模型
    C++安全编码摘录
    C++点滴
    git常用命令(转)
    ASN.1
    TDOA泰勒级数法
    teamviewer解除最大通话限制-特别破解版(转)
    剑指offer——旋转数组的最小数字
    常见的相关分析方法——结合实例
  • 原文地址:https://www.cnblogs.com/SfailSth/p/6669732.html
Copyright © 2011-2022 走看看