zoukankan      html  css  js  c++  java
  • [Code+#3]博弈论与概率统计

    题目

    记得曾经和稳稳比谁后抄这个题的题解,看来是我输了

    不难发现(p)是给着玩的,只需要求一个总情况数除以(inom{n+m}{n})就好了

    (i)为无效的失败次数,即( m Alice)在得分为(0)时的失败次数,那么最后的得分就是(n-m+i)

    不妨将赢看成(1)输看成(-1),我们把输赢情况写成一个(n+m)的序列,记这个序列的最小前缀和为(t),那么无效失败次数就是(|min(0,t)|),也就是当(t<0)的时候,得分应为(n-m+|t|)

    证明的话,考虑一种构造方法,我们把对最小前缀和产生影响的(t)(-1)拿出来,显然两个(-1)之间的数的和应为(0),和为(0)意思就是分数可能涨了涨但最后又扣成(0)了,于是在得分为(0)的时候失败的次数就是(t)

    之后套路的转化成一个平面上的问题,将(-1)视为向上走,(1)视为向右走,那么无效失败次数为(i)的方案数等价与在坐标系上从((0,0))走到((n,m))且经过至少一次(y=x+i)且不超过的方案数

    简单容斥一下,求一下严格低于(y=x+i+1)的方案数减一下严格低于(y=x+i)的方案数就好了

    这个老哥的博客里的图挺好的

    对于一个不合法的方案,我们取第一次达到(y=x+i)之前的路径,并将这段路径沿(y=x+i)翻折,就得到了一条从((-i,i))((n,m))的路径,不难发现这样的路径会经过至少一次(y=x+i),所以这样的路径和不合法的路径是一一对应的,显然这样的路径条数是(inom{n+m}{n+i})

    于是严格低于(y=x+i)的路径条数就是(inom{n+m}{n}-inom{n+m}{n+i}),于是恰好经过经过至少一次(y=x+i)且不超过的方案数为(inom{n+m}{m}-inom{n+m}{n+i+1}-inom{n+m}{n}+inom{n+m}{n+i}=inom{n+m}{n+i}-inom{n+m}{n+i+1})

    对于(ngeq m)的情况,我们求得即为(sum_{i=0}^m(n-m+i)(inom{n+m}{n+i}-inom{n+m}{n+i+1}))

    简单划开就会发现求得其实是((n-m)inom{n+m}{m}+sum_{i=0}^{m-1}inom{n+m}{n+i})

    多组询问求后面那个柿子好像还是一道题来着,直接大力莫队即可

  • 相关阅读:
    线程安全
    C++和java中构造函数与析构函数的调用顺序
    mysql数据库的备份与恢复
    Spring Web Flow 2.0 入门详解
    JBOSS 5.0与tomcat 6.0端口设置
    修改mysql root密码
    Subversion Native Library Not Available
    解决Eclipse导入svn项目自动关闭
    将eclipse中项目的Text File Encoding设置成为GBK
    java下实现调用oracle的存储过程和函数
  • 原文地址:https://www.cnblogs.com/asuldb/p/11997682.html
Copyright © 2011-2022 走看看