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

题解:AT_abc225_h [ABC225H] Social Distance 2

组合意义太吃操作了,还是得我代数推导牛。

题意:给出若干个已有元素 \(a_i\),要求加入一些 \([1,n]\) 内的数且不能和 \(a\) 中已有的相同,使得长度为 \(m\)。定义 \(f(a) = \prod\limits_{i=1}^{m-1} (a_{i+1}-a_i)\),求所有生成的 \(a\)\(f\) 之和。

做法:

首先注意到两段之间的是独立的,同时总和是 \(O(n)\) 的,所以直接考虑把所有段的生成函数弄出来分治乘就可以做到 \(O(n\log ^2n)\),现在的问题是每段之间。

假设长度为 \(l\),分成 \(k\) 段,那么直接写出来生成函数:

\[[x^l]F_k(x) = [x^l] G(x)^{k} \]

这里 \(F_k(x)\) 是划分成 \(k\) 段的生成函数,\(G(x) = \sum\limits_{i=1} ix^i\)

化简 \(G\),变成若干个 \(\frac{x^k}{1-x}\),算出来最终是 \(\frac{x}{(1-x)^2}\)

那么带入回原柿,可以得到 \([x^l]F_k(x) = [x^{k-l}]\frac{1}{(1-x)^{2l}}\)

右边这个柿子我们把这个分式再还原成 \((1+x+x^2\cdots)\),发现这个东西就等于我有 \(k-l\) 个球放入 \(2l\) 个有区分盒子,直接插板得到方案为 \(\binom{k+l-1}{2l-1}\),直接 \(O(1)\) 计算即可。

注意到两端的段其实会少一个乘积,但是也很容易,就是我把一个 \(G\) 换成 \(\frac1{1-x}\),次数少 \(1\) 而已,方案为 \(\binom{k+l-2}{2l-2}\)。如果没有已有元素,即两端都缺,那就再减一即可。

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

相关文章:

  • vscode-vue-缩进
  • Apollo场景建议配置指南:充分发挥分布式配置中心优势
  • CSAPP学习笔记
  • 英伟达领投,语音AI初创Uniphore估值25亿美元;ElevenLabs创始人:语音的意义不在准确,而在打动丨日报
  • 解决vscode中直接运行python代码出现的乱码、环境不匹配的问题
  • 数学分析A 定理简单整理(部分)
  • 表相关操作
  • 部分页面统计用户访问时长
  • 单词故事
  • 【Linux笔记】网络部分——Socket编程 UDP搭建网络云服务器与本地虚拟机的基本通信
  • 11月6日日记
  • 102302149赖翊煊数据采集第二次作业
  • ai学习机哪个品牌好?松鼠 AI 双线矩阵:学习机 + 自习室,提分更高效
  • 招聘实习生丨加入我们,共建 RTE 开发者社区
  • 引领未来,智启新程:Compete MIS平台——低代码时代的全能信息化管理解决方案
  • 终端
  • 2025.11.06 - A
  • CF2085D Serval and Kaitenzushi Buffet
  • STM32时钟学习11.6
  • 2025.11.6总结
  • 高级程序语言设计的四次作业
  • 11月6日
  • 2024 暑期模拟赛 #11
  • startctf环境变量注入及强网拟态smallcode特殊解法
  • Spring ApplicationEventPublisher 事件发布
  • NOIP模拟赛20251106 T4 CF1270H
  • 详细介绍:电阻的分类与应用
  • 题解:CF2121E Sponsor of Your Problems
  • wepoc Nuclei 漏洞扫描器图形界面工具
  • Python实现数据可视化用Matplotlib轻松创建专业级图表 - 指南