【CodeM初赛A 5】数列互质 题解

题目大意

  给出一个长度为 nn 的序列 a1...ana_1...a_n,有 mm 个询问,每次询问给出 l,r,kl, r, k,问 al...ara_l...a_r 中,有多少数的出现次数与 kk 互质。
  n,m5e41ai,knn, m \leq 5e4,1 \leq a_i, k \leq n
  时限 6s

题解

  区间问题可以考虑莫队,可以维护一个桶 tit_i 表示有多少数的出现次数是 ii

  但是统计答案不方便,要把整个桶扫一次。

  于是设个阈值 s=ns=\sqrt n。如果某个数在全局的出现次数 >s>s,就提取出来单独对每个询问做贡献,剩下的数就做莫队。