莫比乌斯反演 + 线性筛.
由于每次只能走一种路径,并且边是双向的,所以从 $i$ 到 $j$ 的边数就是 $\frac {|i-j|} {\gcd(i,j)}$ .
于是每次询问要求 $ans=\sum_{i=1}^n \sum_{j=1}^m \frac {|i-j|} {\gcd(i,j)}$ .
与 $\gcd$ 有关的式子,考虑用莫比乌斯反演那一套操作,假定 $n\le m$ ,开始推式子,
记 $A=\min(\lfloor \frac n d\rfloor,\lfloor \frac m d\rfloor),B=\max(\lfloor \frac n d\rfloor,\lfloor \frac m d\rfloor)$ .
则后面那个 $\sum_{i=1}^A \sum_{j=1}^B |i-j|=\frac {(A-1)A(A+1)} 3+\frac {AB(B-A)} 2$ ,大佬的推导过程 .
前面那一块,需要预处理 $f(d)=\sum_{k|d} k\cdot \mu(k)$ 的前缀和,这是个积性函数,直接线性筛处理.
然后整除分块计算答案,时间复杂度 $O(n+T\cdot \sqrt m)$ .
1 |
|