CF1712E2的双log解法

\(x=\operatorname{lcm}(i,j,k)(i<j<k)\)。如果 \(x<i+j+k\),那么 \(x=k\)\(2k\)

如果 \(x=k\),有 \(i\vert k,j\vert k\)。离线后很容易树状数组计算。

如果 \(x=2k\),令 \(x=2^ap\),则 \(2^a\vert i\)\(2^a\vert j\)

将询问离线,按左端点从大到小处理。对于每个数 \(k\) 存两个 vector 表示它的所有因数和所有奇因数乘上 \(2^{a+1}\) 后的结果(\(k=2^ap,2\nmid p\))。对于 \(x=k\) 的数量可以用存因数的 vector 简单算出。否则,可以二分更新答案。然后树状数组单点修改+区间查询,可以做到 \(O(n\log^2n)\)

posted @ 2022-08-15 10:00  zqs2020  阅读(79)  评论(0编辑  收藏  举报