🍕🏠🌋 当前时间是:

 

CommonAnts 的调和数

题意

给定 \(n\),先进行 \(m\) 次操作,每次给定 \(p,x\),进行 \(\forall j,jp\leq n,s_{jp}\gets s_{jp}+jx\)

然后进行 \(q\) 次查询,每次对 \(x\) 查询 \(\sum\limits_{1\leq i,ix\leq n} is_{xi}\)

  • \(n\leq 10^9\)
  • \(m,q\leq 2\times 10^5\)
  • 保证 \(\prod p \prod x\) 的质因子数量不超过 \(10\)

解法

\(X_d\) 为对 \(d\) 位置操作的所有权值之和。

那么答案即为 \(\sum\limits_{x\mid v} \dfrac{v^2}{x} \sum\limits_{d\mid v} \dfrac{X_d}{d}\)

直接使用狄利克雷前(后)缀和可以做到 \(O(n\log\log n)\),获得 65 分。

可以打表发现在这个数据范围下,包含不超过 \(10\) 个质因子的集合 \(S\) 大小最多在 \(2\times 10^5\) 这个数量级。

所以上式中 \(\sum\limits_{d\mid v}\dfrac{X_d}{d}\) 不同的 \(v\) 较少。

可以枚举 \(S\) 中的 \(v\),然后乘上系数 \(\sum\limits_{iv\leq n} [\gcd(i,L)]i^2\) 其中 \(L\) 是这不超过 \(10\) 个质因子的乘积。

反演之后可以计算系数,有用的点值只有整除分块的位置,所以不超过 \(O(\sqrt{n})\),但是对 \(S\) 中的元素打表可知最多点值只有 \(10^4\) 多一点个。

计算答案时的可以以不超过 \(10\) 个质因子为阶段 dp。(类似狄利克雷前(后)缀和)

复杂度 \(O(\sqrt{n}2^{10}+|S|\cdot 10)\)

代码

提交记录

posted @ 2024-09-02 21:18  zzafanti  阅读(50)  评论(0)    收藏  举报
浏览器标题切换
浏览器标题切换end