zoukankan      html  css  js  c++  java
  • AGC007C Pushing Balls

    Link
    设第(i)个球到左/右边的洞的距离为(d_{2i-1},d_{2i}),这次推完球之后(d ightarrow d')
    首先显然有(|d'|=|d|-2)
    如果我们把第(k+1)个球向左推,那么(d'={d_1,cdots,d_{2k-1},d_{2k}+d_{2k+1}+d_{2k+2},d_{2k+3},cdots d_{2n}})
    如果我们把第(k+1)个球向右推,那么(d'={d_1,cdots,d_{2k},d_{2k+1}+d_{2k+2}+d_{2k+3},d_{2k+4},cdots d_{2n}})
    考虑(d'_k)是什么,在总共(2n)种方案中,有(k)种方案(d'_k=d_{k+2}),有(1)种方案(d_k'=d_k+d_{k+1}+d_{k+2}),有(2n-k-1)种方案(d'_k=d_k)
    也就是说(E(d'_k)=frac{(2n-k)d_k+d_{k+1}+(k+1)d_{k+2}}{2n})
    因为(d_k=a+kd),所以(E(d'_k)=a+frac{2a+3d}{2n}+k(d+frac{2d}n))
    递归求解即可。

    #include<cstdio>
    int main()
    {
        int n;double a,d,ans=0;
        scanf("%d%lf%lf",&n,&a,&d);
        for(a-=d;n;--n) ans+=a+(n+0.5)*d,a+=(2*a+3*d)/n/2,d+=2.0/n*d;
        printf("%.10lf",ans);
    }
    
    
  • 相关阅读:
    node.js中常用的fs文件系统
    秒懂 this
    Filter 过滤器
    Ubuntu 安装zookeeper
    Vmware 设置NAT模式
    TreeMap
    ArrayList扩容
    Java 面试题收集
    SwitchyOmega 设置修改代理
    Jedis操作Redis
  • 原文地址:https://www.cnblogs.com/cjoierShiina-Mashiro/p/12822477.html
Copyright © 2011-2022 走看看