给定n个长度为6的序列(A,B,C,D,E,F),求:
首先令(D,E,F)卷上(mu)变成(D',E',F'),莫反一下:
则我们令(A'_i=sum_{i|d}A_i),B和C做同样的变换。
则就变成:
那么这就是经典三元环计数了,1e5下边有m=2625630这么多条边。
复杂度是(O(msqrt m))的,但是他能过。
然后是正解。
设(f(A)=A*mu,g(A)_i=sum_{i|x}A_x),则:
考虑对于每一个d我们单独做,记(P_i=f(E)_{id},Q_i=f(F)_{id},R_i=g(C)_{id},S_i=A_{id},T_i=B_{id},W_i=D_{id},m=frac nd)。
则可以得到:(sum_{gcd(x,y)=1,xyle m}P_xQ_yR_{xy}sum_{ixle m}sum_{jyle m}S_{ix}T_{jy}W_{gcd(ix,jy)})。
考虑先看后面的式子:
可以注意到,后面这一部分完全跟y没关系!也就是说我们只要知道x即可,我们考虑枚举x和y中比较小的那一个,则取值范围只有根号,可以预处理一发,就把后面的那一部分处理出来,然后枚举y,再枚举y的倍数求个和即可。
好,看看单次复杂度是多少。
首先分析x的预处理的部分,每一次预处理都要花(O(mlog log m))的时间,x会枚举(sqrt m)次,因此复杂度是(O(msqrt mlog log m))。
考虑每一个y出现了多少次,对于小于等于根号m的,出现了y次,这一部分复杂度是:(sum_{i=1}^{sqrt m}ifrac mi=msqrt m)。
对于大于根号m的,出现了(frac mi)次,那复杂度就是:(sum_{i=sqrt m}^m(frac mi)^2),积分一下可以得到:(m^2(frac 1{sqrt m}-frac 1m)=msqrt m)。
因此这一部分不足以成为复杂度瓶颈。
然后对于所有d求个和,复杂度是:(sum_{d=1}^n(frac nd)^{1.5}loglog n=n^{1.5}loglog n)。