【XR-2】永恒

【XR-2】永恒

给定大小为 \(n\) 的两棵树 \(T_1,T_2\),以及 \(T_1\to T_2\) 的一个映射,求:

\[\sum_{x\in T_1}\sum_{y\in T_1}\sum_{u\in T_1}\sum_{v\in T_1} [u<v][x<y][[u,v]\in [x,y]] \textrm{dep}_2(\textrm{LCA}_2(x,y)) \]

\(\rm Sol:\)

先枚举 \((u,v)\) 变成:

\[\sum_{u\in T_1}\sum_{v\in T_1} [u<v] \textrm{dep}_2(\textrm{LCA}_2(x,y))\sum_{x\in T_1}\sum_{y\in T_1}[x<y][[u,v]\in [x,y]] \]

对于前者考虑点分治加容斥,我们选一个点 \(x\) 并统计以其为根的答案,那么此时我们只需要统计跨越子树的答案,此时两条不在同一子树内的点对答案可以产生贡献 \(\textrm{size}(x)\times \textrm{size}(y)\)

由于使用点分治+容斥,那么此时我们只需要统计全集的答案,那么将所有点建立虚树,然后在树上差分,使用 LNOI2014 LCA 的技巧,那么我们只需要统计子树权值平方和。复杂度为 \(\mathcal O(n\log^2 n)\)

当然,我们计算的答案是无视了 \((x,y)\) 的顺序性的,所以答案需要乘以 \(\frac{1}{2}\)

代码把人写枯了。注意一个细节,我们的贡献是真实树上的 \(\rm size\),不是点分治时的 \(\rm size...\)

posted @ 2020-09-11 20:21  Soulist  阅读(140)  评论(0编辑  收藏  举报