T1
小清新数据结构。
我们首先发现如果是在(mod 2^{k+1})条件下,询问的数目会变成一段连续区间。
利用树状数组存储一下(mod 2^{k})的所有情况,这样维护(18)个树状数组和整体加减标记就可以很好的查询了。
T2
莫比乌斯反演
存在结论:
[d(ijk)=sumlimits_{x|i}sumlimits_{y|j}sumlimits_{z|k}[(x,y)=1][(x,z)=1][(y,z)=1]
]
代入答案得到:
[egin{aligned}
ans&=sumlimits_{i=1}^{A}sumlimits_{j=1}^{B}sumlimits_{k=1}^{C}sumlimits_{x|i}sumlimits_{y|j}sumlimits_{z|k}[(x,y)=1][(x,z)=1][(y,z)=1]\
&=sumlimits_{x=1}^{A}sumlimits_{y=1}^{B}sumlimits_{z=1}^{C}lfloorfrac{A}{x}
floorlfloorfrac{B}{y}
floorlfloorfrac{C}{z}
floorsumlimits_{i|(x,y)}mu(i)sumlimits_{j|(x,z)}mu(j)sumlimits_{k|(y,z)}mu(k)\
&=sumlimits_{i=1}^{min(A,B)}mu(i)sumlimits_{j=1}^{min(A,C)}mu(j)sumlimits_{k=1}^{min(B,C)}mu(k)sumlimits_{[i,j]|x}lfloorfrac{A}{x}
floorsumlimits_{[i,k]|y}lfloorfrac{B}{y}
floorsumlimits_{[j,k]|z}lfloorfrac{C}{z}
floor\
f(n)&=sumlimits_{n|i}lfloorfrac{A}{i}
floor\
g(n)&=sumlimits_{n|i}lfloorfrac{B}{i}
floor\
h(n)&=sumlimits_{n|i}lfloorfrac{C}{i}
floor\
&=sumlimits_{i=1}^{min(A,B)}sumlimits_{j=1}^{min(A,C)}sumlimits_{k=1}^{min(B,C)}mu(i)mu(j)mu(k)f([i,j])g([i,k])h([j,k])\
end{aligned}]
直接枚举还是(O(n^3))的。
考虑有可能对答案做出贡献的三元组((i,j,k)):
[forall i,j,k,mu(i)
ot= 0,mu(j)
ot =0,mu(k)
ot =0,[i,j]leq mx,[i,k]leq mx,[j,k]leq mx
]
[d=(x,y),x=id,y=jd,(i,j)=1,ijdleq max(A,B,C)
]
枚举(d,i,j)按照这个方法进行建边,然后三元环计数即可。
边数为(m)数十万的级别。
(msqrt{m})可以进行三元环计数
这样只能计数三元环各不相同的情况。
考虑有一对相同的时候,这种情况我们可以在建边枚举两个点的时候进行统计。
而三个一模一样的就直接枚举这个点是谁就可以了。
T3
生成函数
设(H(x))为大小为(i)的生成图个数的(EGF)。
那么有:
[H(x)=sumlimits_{i=0}^{+infty}2^{inom{i}{2}}x^i
]
然后设(G(x))为大小为(i)的连通图的(EGF)。
那么有:
[H(x)=sumlimits_{i=1}^{+infty}frac{G^i(x)}{i!}=e^{G(x)}
]
所以:
[G(x)=ln(H(x))
]
设(F_{w}(x))为由(w)个连通块组成的大小为(i)的图的个数的(EGF)。
那么有(f_{w}(i)=sumlimits_{j=1}^{i}inom{i-1}{j-1}g(j)f_{w-1}(i-j))
拆一下组合数卷积形式:
[frac{f_{w}(i)}{(i-1)!}=sumlimits_{j=1}^{i}frac{g(j)}{(j-1)!}frac{f_{w-1}(i-j)}{(i-j)!}
]
这样就简单了卷积一发就可以了。
然后我们考虑一下题目的贡献。
如果有(P)个连通块,那么贡献就是:
[P^{K}=sumlimits_{i=0}^{K}egin{Bmatrix}K\iend{Bmatrix}P^{underline{i}}=sumlimits_{i=0}^{K}egin{Bmatrix}K\iend{Bmatrix}i!inom{P}{i}
]
后面那个(inom{P}{i})转化一下组合意义就是从(P)个连通块中选出大小为i$个连通块的子集。
那么就可以用上面求出来的东西计算了。
[ans=sumlimits_{i=0}^{K}egin{Bmatrix}K\iend{Bmatrix}i!sumlimits_{j=1}^{n}f_{i}(j)2^{inom{n-j}{2}}
]
后面的东西还是可以用卷积预处理。
这样单次询问就可以做到(O(k))了。