没动脑子就 gf 一路写下来了......实际上就是把插板法的 gf 写了一下/zk
首先考虑一下一个 X 合法是什么情况,那就是总和是 2n−2 并且保证 0<Xi<n。
证明就考虑贪心构造一下,每个 1 挂在一个 ≥2 的上面,不断挂使得最后只剩下两个 1 和一堆 2,再把它们串起来就行。
然后就能发现,这样也同时构造出了最大的直径(容易发现这是上界),那就是 度数 ≥2 的个数 + 1.
然后枚举度数为 1 的有 k 个,此时答案为 n−k+1,先仅考虑度数 ≥2 内部的顺序,最后乘上 (nk) 以插入度数为 1 的。这样要算的方案数就是:
[z2n−2−k](z2+z3+⋯+zn−1)n−k=[z2n−2−k−2(n−k)](1+z+z2+⋯+zn−3)n−k=[zk−2](1+z+z2+⋯+zn−3)n−k
由于 k≤n−1,那么 n−3≥k−2,所以:
=[zk−2](1+z+z2+z3+⋯)n−k=[zk−2](11−z)n−k
已经化到我们熟悉的形式了,根据广义二项式定理它的系数就是 (n−k+k−2−1k−2)=(n−3k−2),最后答案的推导也是平凡的。
n−1∑k=2(nk)(n−3k−2)(n−k+1)=(n−1)n−1∑k=2(nk)(n−3k−2)−n−1∑k=2(nk)(n−3k−2)(k−2)=(n−1)n−1∑k=2(nn−k)(n−3k−2)−(n−3)n−1∑k=3(nn−k)(n−4k−3)=(n−1)(2n−3n−2)−(n−3)(2n−4n−3)
倒数第二步同时用了对称恒等式和吸收恒等式,最后一步则是范德蒙德卷积。
Code:https://atcoder.jp/contests/abc290/submissions/39046485
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
2022-03-27 「题解」洛谷 P3084 [USACO13OPEN]Photo G