B
给定一棵树。多次询问 \(l_1,r_1,l_2,r_2\) 求
\[\operatorname{lca}([l_1,r_1],[l_2,r_2])=\bigoplus\limits_{u\in[l_1,r_1],v\in[l_2,r_2]}\operatorname{lca}(u,v) \]\(n,q\le5\times10^4\)$
首先必须有一个在线 \(O(1)\) LCA。显然可以转化到 DFS 序上 RMQ。
换根 LCA 的 trick:
显然左边一定与右边三项中的一个相等。分讨可证,另外两个总会是相同的值抵消。则可以固定根,问题转变为求:
只需知如何解决最后一项。显然这个东西套路差分容斥,就是求:
注意到求一段到另一段的贡献,套路分块,变成若干整块到前缀的贡献,做前缀和变为 整块前缀 到 任意前缀 的贡献。这样可以做到 \(O(nB)\) 时空预处理。散块的 \(\operatorname{lca}([bl_x,x],[1,y])\) 则可以同样容斥为 \(\operatorname{lca}([1,bl_y],[1,x])\operatorname{xor}\operatorname{lca}([1,bl_y],[1,bl_x))\)。
只需处理 散块到散块 的贡献。这部分只好暴力变成 \(O(B^2)\),这样很明显 \(B=n^{1/3}\) 复杂度应该在 \(O(n^{5/3})\) 级别,但实际上询问用前缀和不需要遍历整块,这部分单次 \(O(B^2)\),而且很多层容斥常数巨大,所以 \(B\) 应该适当调小。
D
先简化问题,考虑 \(a_{i,j}=xy\) 的一个质因子 \(p\)。设 \(t_i=X_iY_i\),则最后要求 \(t[i]=1\)。
发现当 \(p\) 分给 \(x\) 时有 \(t_i\gets t_i\cdot p,t_j\gets \dfrac{t_j}{d}\),分给 \(y\) 时有 \(t_i\gets \dfrac{t_i}{d},t_j\gets t_j\cdot p\)。
将 \(p\) 看作一条连接 \(ij\) 的边,两种方案分别对应从 \(j\) 指向 \(i\) 和从 \(i\) 指向 \(j\)因为初始和最后均有 \(t_i=1\),即 \(t_i\) 乘 \(p\) 和除 \(p\) 的个数相同,对应到图上就是 入度等于出度。
将每个数分解质因数,对每种质因子 \(p\) 分别跑欧拉回路即可。