随笔 - 51  文章 - 0  评论 - 6  阅读 - 445

AGC240G

ABC240G Teleporting Takahashi

组合意义天地灭,代数推导保平安。
根据对称性,从 (0,0,0) 走到 (x,y,z) 的方案数等于走到 (|x|,|y|,|z|) 的方案数,下文假设 x,y,z>0
最小步数显然是 x+y+z,每一步都是将某一维加 1,如果我们在某一维添上一个减 1 的操作,为了让这一维达到最终目标,应添加一个加 1 的操作,因此增加的步数一定是 2 的倍数,这就是判无解的条件。
由于每多一个减 1 就一定多一个加 1,因此我们可以通过总步数算出一共走了多少次 -1,记为 cnt=n(x+y+z)2
于是我们枚举第一维用了多少次 -1,以及第 2 维用了多少 -1,可以得到如下长相十分恐怖的式子:

ans=i=0cnt(nx+i)(n(x+i)i)j=0cnti(n(x+2i)y+j)(n(x+2i)(y+j)j)(n(x+2i)(y+2j)z+cntij)

尝试化简后面那坨式子,暴力拆开组合数:

W=j=0cnti(n(x+2i)y+j)(n(x2i)(y+j)j)(n(x2i)(y+2j)z+cntij)=j=0cnti(n(x+2i))!(y+j)!j!(z+cntij)!(cntij)!=(n(x+2i))!j=0cnti1(y+j)!j!(z+cntij)!(cntij)!

把后面凑成新的二项式系数:

W=(n(x+2i))!(cnt+yi)!(cnt+zi)!j=0cnti(cnt+yi)!(y+j)!(cntij)!(cnt+zi)!j!(z+cntij)!=(n(x+2i))!(cnt+yi)!(cnt+zi)!j=0cnti(cnt+yiy+j)(cnt+ziz+cntij)=(n(x+2i))!(cnt+yi)!(cnt+zi)!(2cnt+y+z2icnt+y+zi)

其中最后一步用到了范德蒙德卷积公式。
于是枚举 i 就能做到 O(n) 计算。
code

posted on   cool_tyl  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示