卧薪尝胆,厚积薄发。
普通树上
Date: Sat Jan 26 22:35:20 CST 2019
In Category:
NoCategory
Description:
给定两棵
$n$
个节点的树
$T1,T2$
,求:
$$
\sum_{i=1}^n\sum_{j=i+1}^ndis_1(i,j)\times dis_2(i,j)\mod998244353
$$
$1\leqslant n\leqslant 10^5$
Solution:
第一种做法:对
$T1$
边分治,然后两边黑白染色拿到
$T2$
上建虚树
$DP$
算贡献。
第二种做法:
先化式子:
$$
\begin{align}
&\sum_{i=1}^n\sum_{j=i+1}^ndis_1(i,j)\times dis_2(i,j)\\
=&\frac 1 2\sum_{i=1}^n\sum_{j=1}^ndis_1(i,j)\times(dep_2[i]+dep_2[j])-\sum_{i=1}^n\sum_{j=1}^ndis_1(i,j)\times dep_2[LCA_2(i,j)])\\
=&\sum_{i=1}^n\sum_{j=1}^ndis_1(i,j)\times dep_2[i]-\sum_{i=1}^n\sum_{j=1}^ndis_1(i,j)\times dep_2[LCA_2(i,j)])
\end{align}
$$
于是我们可以
$dfs$
枚举
$LCA_2(i,j)$
,然后对
$T_1$
边分树合并,就可以计算答案了。
Code:
In tag:
树-边分树合并
Copyright © 2020
wjh15101051
ღゝ◡╹)ノ♡