link。
非 GF 做法:https://xyix.gitee.io/posts/?&postname=cf-gym-102978-c 。
简单转化问题:求所有 x∈[1,⌊R/B⌋] 对应的合法方案数之和。
对于某一 x,枚举左边的红蓝球数量,可得:
ansx=B∑b=0R−(B−b)x∑r=bx(r+bb)(R−r+B−bB−b)=B∑b=0R−Bx∑d=0((bx+d)+bb)(R−(bx+d)+B−bB−b)=R−Bx∑d=0B∑b=0((x+1)b+db)((x+1)(B−b)+(R−Bx−d)B−b)
以下记 t=x+1。
系数 (tb+db) 与广义二项级数 Bt(z) 有关。
记 G(z)=z(1+z)t,则它的复合逆 F(z)=Bt(z)−1。于是:
∑b=0(tb+db)zb=(1+F)d×1+F1−(t−1)F
关于广义二项级数的详细内容可见文末。
代入原式,可得:
R−Bx∑d=0B∑b=0(tb+db)(t(B−b)+(R−Bx−d)B−b)=R−Bx∑d=0B∑b=0([zb](1+F)d×1+F1−(t−1)F)([zB−b](1+F)R−Bx−d×1+F1−(t−1)F)=[zB]R−Bx∑d=0((1+F)d×1+F1−(t−1)F)((1+F)R−Bx−d×1+F1−(t−1)F)=(R−Bx+1)([zB](1+F)R−Bx×(1+F1−(t−1)F)2)
考虑对 H(F)=(1+F)R−Bx×(1+F1−(t−1)F)2 进行拉格朗日反演:
[zB]H(F)=[z0]zH×G′G−B−1=[z0]z(1+z)R−Bx×(1+z1−(t−1)z)2×1−(t−1)z(1+z)t+1×((1+z)(B+1)tzB+1)=[zB](1+z)(R−Bx)+2−(t+1)+(B+1)t1−(t−1)z=[zB](1+z)R+B+11−xz=B∑i=0(R+B+1i)xB−i
那么答案为 (R+1)∑Bi=0(R+B+1i)(∑⌊R/B⌋x=1xB−i)−B∑Bi=0(R+B+1i)(∑⌊R/B⌋x=1xB−i+1)。
多项式求逆算自然数幂和即可。
一些关于 Bt(x) 的补充。
Bt(x) 满足方程 Bt(x)=xBtt(x)+1。当 t=2 时,B2(x) 即卡特兰数的 OGF,那么 Bt 其实是卡特兰数的推广。
参考卡特兰数,这个方程至少有如下几种组合意义:
(1)儿子有序的 t 叉树。
按照定义,显然有方程 Bt(x)=xBtt(x)+1。
(2)凸多边形的 t+1 边形划分(好像去年 FJOI 考了这道题)。
选取一条凸多边形上的边,它所在的 t+1 边形将原凸多边形划分成 t 份,因此有方程 Bt(x)=xBtt(x)+1。
(3)(0,0)→(n,(t−1)n) 且始终在直线 y=(t−1)x 下方的路径数。
仿照卡特兰数,枚举第一次碰到 y=(t−1)x 的点,那么有 Bt(x)=xBt(x)T(x)+1,其中 T(x) 表示完全不碰到 y=(t−1)x 的方案数。
考虑这条路径第一次碰到直线 y=(t−1)x−i,i∈(0,t−1) 的时刻(该路径一定会碰到),并按这 t−1 个时刻分段,每一段都贡献一个 Bt(x)。因此有 T(x)=Bt−1t(x)。
感觉不是很平凡,如果有更好的构造请告诉我(用 Raney 引理直接得到封闭形式并惊讶发现它就是广义二项级数之类的就算了)。
这个组合意义可以用于解决本题。
p.s:
尽管上面探讨了 Bt 的组合意义,但是其实 t 在取任意值时下文中的公式都是成立的(此时定义为广义二项系数)。
不过 Bt 有常数项,不方便拉格朗日反演。记 F=Bt−1,它有复合逆 G=x/(1+x)t。那么:
[xn]Brt=[xn](1+F)r=[x0]x(1+x)r1−(t−1)x(1+x)t+1(1+x)tn+txn+1=[xn](1+x)tn+r−1(1−(t−1)x)=(tn+r−1n)−(tn+r−1n−1)(t−1)=(tn+rn)×rtn+r
最后来推导 ∑n=0(tn+rn)xn=(1+F)r×1+F1−(t−1)F(当然,右推左是 trivial 的):
(tn+rn)=[xn](1+x)tn+r=[x0]((1+x)tx)n(1+x)r=[x0]G−n(1+F(G))r=[x0]x×x−n(1+F)r×F′F=[xn](1+F)rxF′F
之后只需再证明 xF′F=1+F1−(t−1)F。
注意到 G′=1−(t−1)x(1+x)t+1,那么有 xG′G=1−(t−1)x1+x(这也表明 G 是微分有限的 废话 它能不微分有限吗),由链式法则求导又有 F′=1G′(F)。
于是 xF′F=G(F)G′(F)F=1+F1−(t−1)F。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现