题意
给出一个长度为n的序列A,有q个询问,每次询问 φ(区间所有数的乘积的) 。强制在线。
n<=50000,q<=100000,Ai<=1000000
分析
又学到了新姿势。
首先考虑如何强制在线求一个区间内不同数的个数。
我们对序列建可持久化线段树,线段树下标表示位置而不是权值。对于位置i上的数x,我们把i的可持久化线段树上的位置i加上1。对于上一个出现了x的位置j,我们把i的可持久化线段树上的位置j减去1。假设要查询区间[l,r],那么就直接查询r的可持久化线段树上的区间[l,r]即可。正确性的话只要随便yy一下就比较显然了。
现在考虑这一题怎么做。
显然我们要求的是 ∏<