传送门


如果在\(0\)以下之后仍然会减分,那么最后的结果一定是\(N-M\)。

注意到如果在Alice分数为\(0\)时继续输,那么就相当于减少了一次输的次数。也就是说如果说在总的博弈过程中,Alice在分数等于\(0\)时输了\(x\)次,那么最后的结果就是\(N-M+x\)。

不妨考虑一个序列\(a_i\),如果\(a_i = 1\)表示Alice第\(i\)局输了,\(a_i = -1\)表示第\(i\)局赢了,那么不难发现\(x =\)序列\(a_i\)的最大前缀和。不妨设\(max_a\)表示序列\(a\)的最大前缀和。然后可以发现序列\(a_i\)与格路问题有一些相似:从\((0,0)\)开始走路,如果\(a_i = 1\)则第\(i\)步向上走一格,否则向右走一格,那么一个满足条件的序列\(a\)是一个从\((0,0)\)到\((N,M)\)的路径,而\(max_a\)等于这条路径上所有的点中\(y-x\)的最大值。

对于一组询问,我们要求的就是\(Ans = \sum\limits_{t} max_t\),当\(N > M\)时\(Ans = \sum\limits_{i=1}^M \sum\limits_{t} [max_t \geq i]\),当\(N \leq M\)时\(Ans = M - N + \sum\limits_{i = M - N + 1} ^ M \sum\limits_{t} [max_t \geq i]\)。

对于\(i \in [\max(M - N , 0) + 1 , M]\),\(\sum\limits_t [max_t \geq i]\)相当于从\((0,0)\)到\((N,M)\)必须经过\(y = x + i\)的路径条数,这是格路问题的经典问题,不难得到答案是\(\binom{N+M}{M - i}\)。

那么当\(N > M\)时\(Ans = \sum\limits_{i=1}^M \binom{N + M}{M - i} = \sum\limits_{i=0}^{M - 1} \binom{N + M}{i}\),当\(N \leq M\)时\(Ans = M - N + \sum\limits_{i=0}^{N - 1} \binom{N + M}{i}\)。

那么如果我们可以快速求出\(f(x,y) = \sum\limits_{i=0}^x \binom{y}{i}\)就可以快速求解。

注意到这是一个二元组询问,似乎不能直接做,不妨考虑莫队。那么我们需要在知道\(f(x,y)\)时\(O(1)\)求出\(f(x,y \pm 1)\)以及\(f(x \pm 1,y)\)。后者可以直接做,对于前者可以使用\(\binom{y}{x} = \binom{y - 1}{x} + \binom{y - 1}{x - 1}\)得到一种\(O(1)\)的转移方法。

代码

最新文章

  1. animation js控制 缓动效果
  2. JQuery validate验证 自定义
  3. 字符串处理:ABAP中的正则表达式
  4. jquery 只有二级下拉菜单
  5. Ajax--WebService返回List
  6. MySQL 创建用户与修改密码
  7. 转:JavaScript定时机制、以及浏览器渲染机制 浅谈
  8. 用android代码显示图片的一部分源码
  9. 处理JSON格式的数据
  10. java多线程(七)-线程之间的 协作
  11. windows平台下cocos2d-x-3.0beta2创建新项目
  12. H5 俄罗斯方块Demo
  13. Lua中的userdata
  14. SpringMVC简介
  15. SliverList , SliverFixedExtentList
  16. 【WPF】给TextBox添上Label
  17. iOS开发:一个瀑布流的设计与实现(已实现缓存池功能,该功能使得瀑布流cell可以循环利用)
  18. IOS 此时无法安装XXX
  19. [学习笔记]NTT——快速数论变换
  20. DOM基本代码一

热门文章

  1. 洛谷P1353 USACO 跑步 Running
  2. 前端微信小程序云开发基础讲解
  3. 我的Android前生今世之缘-学习经验-安卓入门教程(六)
  4. x32下的DLL隐藏
  5. Hyperspectral Image Classification Using Similarity Measurements-Based Deep Recurrent Neural Networks
  6. iwms后台编辑器无法粘贴word格式的解决方法
  7. 第06组 Beta冲刺(2/5)
  8. vs2015 编译obs studio 遇到的几个错误
  9. _stdcallthunk
  10. apt与apt-get命令的区别