题目

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

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

记\(i\)为无效的失败次数,即\(\rm 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\),所以这样的路径和不合法的路径是一一对应的,显然这样的路径条数是\(\binom{n+m}{n+i}\)

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

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

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

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

最新文章

  1. 自己来实现一个简易的OCR
  2. 前端学PHP之数据类型
  3. .NET MVC 和 JAVA MVC有什么区别?
  4. 关键字extern
  5. C# 计算字符串在控制台中的显示长度
  6. SQL Server之游标的基础知识
  7. Python之路 day2 字符串函数
  8. MySQL忘记密码怎么办
  9. Nginx高性能服务器安装、配置、运维 (2) —— Nginx安装
  10. 《C和指针》章节后编程练习解答参考——6.2
  11. python基础4
  12. 对LCS算法及其变种的初步研究
  13. SystemUI
  14. Android测试(二)——adb常用命令
  15. python全栈开发day56-mysql
  16. Linux设备驱动模型之platform(平台)总线详解
  17. hdu 1455 N个短木棒 拼成长度相等的几根长木棒 (DFS)
  18. &#39;pip&#39; 不是内部或外部命令
  19. GOAP
  20. 用JS实现判断iframe是否加载完成

热门文章

  1. Java对象toString()方法
  2. 使用 C++ 编写的基础 Windows 服务 (CppWindowsService)
  3. 关于原生js中ie的attacheEvent事件用匿名函数改变this指向后,不能用detachEvent删除绑定事件的解决办法?
  4. USACO 2014 US Open Odometer /// 枚举
  5. zabbix--Simple checks 基本检测
  6. bzoj4544 椭圆上的整点
  7. Shell 变量操作
  8. 如何在mysql数据库中开启使用tab键补全功能
  9. 更新view是可以update到表的
  10. ubuntu 安装pip并修改为阿里云pip源