当前位置: 首页 > news >正文

【未完工题解】AT_abc290_f [ABC290F] Maximum Diameter

link

壹:构造最大直径

首先要考虑,当序列被确定之后,最大长度怎么计算
我们定义叶子节点为度数 \(X=1\) 的节点
有一个显然的情况,即把所有非叶子节点串式项链,然后把叶子节点插上面
设叶子节点有 \(K\) 个,此时最大长度 \(len=n-K+1\)

贰:计数

接下来我们要考虑的是如何计数
注意到,总度数 \(all\) 恒为 \(2*n-2\)
我们可以枚举 \(K\) ,然后把 \(all-K\) 分配给 \(n-K\) 个非叶子节点,再乘上 \(len\)

怎么计数把 \(all-K\) 分配给 \(n-K\) 个非叶子节点 的个数?
容易发现,\(all-K\) 是球个数,叶子节点是盒子个数,且球相同盒子不同,盒子不能为空
容易得到组合数 \(\binom{all-K-(n-K)-1}{n-K-1}=\binom{2*n-2-K-n+K-1}{n-K-1}=\binom{2*n-2-K-n+K-1}{n-K-1}=\binom{n-3}{n-K-1}\)
所以 \(\binom{n-3}{n-K-1}\) 即为答案

此时我们得到 \(ans=\sum_{k=0}^{n}\binom{n}{K}\binom{n-3}{n-K-1}*len=\sum_{k=0}^{n}\binom{n}{K}\binom{n-3}{n-K-1}*(n-K+1)\)
直接算是 \(O(n)\) 的,过不掉,不过我们可以考虑对 $ \sum_{k=0}^{n}\binom{n}{K}\binom{n-3}{n-K-1}*(n-K+1) $ 做变换

参:优化

两个常见组合公式

  • 吸收恒等式 \(k\binom{n}{k} = n\binom{n-1}{k-1}\)
  • 范德蒙德卷积 \(\sum_{i=0}^{k}\binom{n}{i}\binom{m}{k-i}=\binom{n+m}{k}\)

可以通过组合意义理解

\(ans=\sum_{k=0}^{n}\binom{n}{K}\binom{n-3}{n-K-1}*(n-K+1)\)
如果 \(n-K+1\) 可以转成 \(n-K-1+b\) 的形式,我们就可以用吸收恒等式优化
所以有 \(ans=\sum_{k=0}^{n}\binom{n}{K}\binom{n-3}{n-K-1}*(n-K-1+2)=\sum_{k=0}^{n}\binom{n}{K}\binom{n-3}{n-K-1}*(n-K-1)+2*\sum_{k=0}^{n}\binom{n}{K}\binom{n-3}{n-K-1}\)
左边单项式可以用 吸收恒等式 & 范德蒙德卷积 优化,右边单项式可以用 范德蒙德卷积 优化
得到 \(ans=\sum_{K=0}^{n}\binom{n}{K}\binom{n-4}{n-K-2}(n-3)+2\binom{2n-3}{n-1}=\binom{2n-4}{n-2}(n-3)+2\binom{2n-3}{n-1}\)
可以 \(O(1)\) 求出

完整来说
\(ans\)
\(=\sum_{k=0}^{n}\binom{n}{K}\binom{n-3}{n-K-1}*(n-K+1)\)
\(=\sum_{k=0}^{n}\binom{n}{K}\binom{n-3}{n-K-1}*(n-K-1+2)\)
\(=\sum_{k=0}^{n}\binom{n}{K}\binom{n-3}{n-K-1}*(n-K-1)+2*\sum_{k=0}^{n}\binom{n}{K}\binom{n-3}{n-K-1}\)
\(=\sum_{K=0}^{n}\binom{n}{K}\binom{n-4}{n-K-2}(n-3)+2\binom{2n-3}{n-1}\)

肆:操作

\(\binom{n}{m}=\frac{n!}{m!(n-m)!}=n!*inv_{m!}*inv_{(n-m)!}\)
预处理阶乘,然后对于每个阶乘求逆元即可

线性求逆元方式:inv_{i}=inv_{i+1}*(i+1)%mod

时间复杂度 \(O(N+T)\)

伍:代码

http://www.jsqmd.com/news/545923/

相关文章:

  • Miniconda环境迁移实战:如何将CentOS装好的Python环境打包到其他服务器?
  • 语音合成中的韵律建模工具:silero-models使用终极指南
  • 3/27
  • oii一键生成动漫,oiioii一键生成动漫,oii邀请码,oiioii邀请码2026年3月27日最新
  • AI Coding工具都有哪些,大型项目使用AI Coding需要注意什么
  • 解锁系统底层:7款必备工具助你掌控Windows内核
  • 告别窗口混乱:小白窗口管理工具多屏协同办公实战指南
  • java毕业设计下载(全套源码+配套论文)——基于Java+Socket的视频会议系统设计与实现
  • HunyuanVideo-Foley实战案例:跨境电商独立站产品视频AI批量生成
  • H5-Dooring深度解析:React可视化编辑器的架构革新与效率革命
  • SMUDebugTool:解锁AMD锐龙平台性能潜力 — 硬件爱好者的深度调校指南
  • Java参数传递与类型差异详解
  • Uvicorn与Couchbase Analytics Service集成:构建高性能数据分析API的终极指南
  • 实战应用指南:基于快马平台构建可部署的期刊登录系统,即拿即用
  • 终极UEFI固件更新自动化工具:批量更新与管理系统完整指南
  • Java字符串算法终极指南:35种文本处理核心技术详解
  • 终极代码质量保障:freeCodeCamp项目的自动化检测体系解析
  • Elsevier Tracker:科研投稿进度监控的终极浏览器扩展解决方案
  • 3步释放华硕笔记本潜能:G-Helper轻量化控制工具的极致优化指南
  • Foobar2000歌词插件高效配置指南:实现歌词精准匹配与逐字同步
  • 大厂速报:小红书期权涨麻,字节年终暴击,AI赛道卷疯了
  • 如何高效使用PPTist:打造专业演示文稿的实用指南
  • OpCore Simplify:终极指南!让黑苹果配置从8小时缩短到45分钟的自动化神器
  • 3步解锁语音转文字效率工具:免费神器AsrTools让音频处理效率提升10倍
  • SWF逆向工程认证培训师手册:基于JPEXS Free Flash Decompiler的教学指南
  • OpenClaw操作录制功能:基于百川2-13B-4bits实现人类示范学习
  • UEFI网络驱动测试自动化:完整测试脚本示例与实践指南
  • 终极指南:如何用Gemini CLI验证色彩一致性
  • 告别混乱依赖:图解Go-Kratos中的依赖注入(Wire)是如何让微服务代码更清爽的
  • OpenClaw压力测试:Qwen3.5-9B在持续任务中的稳定性优化