The 2024 ICPC Asia East Continent Online Contest (II) K.Match
题面
给定长度为
题解
考虑两个序列
序列
-
的下一位为k ,序列1 合法的条件是A,B 和A0↔B1 。A1↔B0 - 记
的方案数为A0↔B1 ,fi 的方案数为A1↔B0 ,容易发现,答案为gi 与f 的一个卷积,即g 。ansi+j=fi×gj
- 记
-
的下一位为k ,序列0 的合法条件为A,B 和A0↔B0 ,同时对于A1↔B1 和A0↔B1 一定成立,我们需要考虑如何将两者答案合并。A1↔B0 -
记
的方案数为A0↔B0 ,fi 的方案数为A1↔B1 ,gi 的方案数为A0↔B1 ,hi 的方案数为A1↔B0 。ti -
考虑
和A0↔B1 的任选性,任选A1↔B0 个对其随机排列,容易看出i ,hi=i!(|A0|i)(|B1|i) 。ti=i!(|A1|i)(|B0|i) -
和A0↔B0 的组合意义同A1↔B1 取k 时的操作,对1 与f 做卷积得到g 。Si+j=fi×gj
-
-
为了将
与h,t 合并,枚举三个集合分别选择了S 个匹配。i,j,l -
对每组
,去除(i,j) 使用的A0↔B0 对,i 使用的A1↔B1 对,每次重新计算一组j ,其中S ,hu=u!(|A0|−iu)(|B1|−ju) tu=u!(|A1|−ju)(|B0|−iu) -
先卷
和h 得到t ,再把三者卷起来有S 。ansi+j+l=hi×tj×Sl
-
-
-
考虑边界情况,定义
为递归计算的solve(A,B,lev) 序列,A,B 为当前考虑的位。lev -
当
或|A|=0 时,没有可选项数,|B|=0 ,ans0=1 。ansi=0(i>0) -
当
时,说明前面的位被考虑完毕了,lev=−1 可以任意组合,计算A,B 。ansi=i!(|A|i)(|B|i) -
否则将
按当前位分解为A,B 对下一个A0,A1,B0,B1 讨论。lev
-
按照题意分析复杂度,对于
总体时间复杂度
__EOF__

本文链接:https://www.cnblogs.com/YipChipqwq/p/18554360.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧