Luogu4495
前言
老师给的夯基训练题,感觉已有题解做法复杂度稍高,为此优化之。
一些记号
- 表示 的因子个数(即 )。
- 表示 的本质不同质因子个数。
思路
把每个数 变为 ,显然不影响答案。
此时数的种类只有 种。
则显然此时一种选法合法当且仅当 ,其中 代表选择的数的集合(背包)。
我们进行质因数分解,则每个数可被唯一分解。
因此在此意义下有良好的偏序关系。
定义每个数 的选法的 GF 为 。
不妨考虑对每个数的 GF 在每个质数的幂次上同时做 卷积,即所谓 卷积。显然此时再做一次 zeta 变换(也即 Dirichlet 前缀和)即得答案系数。
卷积就和我们的交 / 并卷积类似了。
于是考虑调用 CF449D 的套路。
其中乘法指 卷积。
我们把每个 GF 用 FMT 在数论上做一遍,逐项分别乘起来,IFMT 回去,就是 卷积,但这样复杂度不够优(为 的,也即此题大多数题解的复杂度)。
由于无论哪个位置, 在 FMT 后都会对之施以贡献,所以每个 在其所能影响的范围的加上 相当于把 变成 ,也即乘以 。
于是不妨令所有 对 位置直接施以 的贡献,再做一次 FMT,然后在把每个位置的值 变为 ,最后再 IFMT 回来。
复杂度分析
至此,复杂度为 ,可近似认为是 ,其中 因子来源于 预处理(当然,是对着 的分解式搞)。
对 的质因数分解可用 Pollad-Rho 做到 ,此处不计。
事实上,通过更精细的方法,对 旁的 因子可以作出进一步优化。
本文来自博客园,作者:myee,转载请注明原文链接:https://www.cnblogs.com/myee/p/Luogu-solution-p4495.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端