专栏文章

题解:P9060 [Ynoi2002] Goedel Machine

P9060题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@minv4xpv
此快照首次捕获于
2025/12/02 08:51
3 个月前
此快照最后确认于
2025/12/02 08:51
3 个月前
查看原文
简单数据结构题。认为 n,mn,m 同阶。
对每个素数计算答案后合并。首先,每个数只有至多一个 >V> \sqrt V 的素因子,因此我们分开做 V\le \sqrt V 的素因子和 >V> \sqrt V 的素因子。
  1. 素因子 p>Vp > \sqrt V
记区间 [l,r][l,r] 中有 kk 个数是 pp 的倍数,会贡献 p2k1p^{2^k-1}。对于每个 1kcntp1 \le k \le cnt_pcntpcnt_p 表示全局中多少个数为 pp 的倍数),预处理 p2kp^{2^k} 及其逆元。
这样很容易使用莫队做到 O(nn)O(n \sqrt n)
  1. 素因子 pVp \le \sqrt V
考虑计算 [l,r][l,r]pp 的幂次。设区间中分别有 cic_i 个数满足 νp(a)=i\nu_p(a) = iilogp(V)=ti \le \log_p(V) = t),则答案显然是:
i=1ti(2jicj2j>icj)\sum_{i=1}^t i(2^{\sum_{j \ge i} c_j} - 2^{\sum_{j > i} c_j})
因此我们需要维护 tt 个序列前缀和。复杂度为 O(npVlogp(V))O(n \sum_{p \le \sqrt V} \log_p(V))。注意到,这样的 pp 大概是 O(VlnV)O(\frac{\sqrt{V}}{\ln V}) 个,因此 pVlogp(V)O(V)\sum_{p \le \sqrt V} \log_p(V) \approx O(\sqrt V)
注意此处需要使用光速幂防止复杂度退化(维护 p2kp^{2^k} 也行)。
综上所述,我们在 O(nn+nV)O(n \sqrt n + n \sqrt V) 的复杂度内解决了此题。

评论

1 条评论,欢迎与作者交流。

正在加载评论...