题意
给定一棵(n)个点的树,每个点有颜色(c_i)
两条不相交的路径((a,b)(c,d)(均不相同)),满足(c_a=c_b,c_c=c_d)为合法方案
((a,b)(c,d)=(c,d)(a,b))
(q)次询问,每次给定(x),求不以(x)为端点的合法方案
(n,qle 10^5)
做法
对于((a,b)(c,d),在四个点上都统计一次,)令(ans_i)为(i)作为端点,(Ans=(frac{1}{4}sum ans_i)-ans_x)
考虑枚举(x,y),(x-y)路径子树内的路径是所有与其不相交的路径
显然,我们考虑点分治,令(G)为当前点分中心,我们对跨子树的点对 及 (G)与其他点对处理
(G)与其他点对很好做,我们具体来做跨子树的点对
(x-G-y)
- 令(sum)为(G)子节点的(sum f)
- 令(h_x)为(x-G)路径上(G)的子节点的(f)值
- 令(g_x):挨着(x-G)路径上的点的(sum f)
那么((x,y))的答案为:(sum-h_x-h_y+g_x+g_y),这个很简单能维护