SDOI2018 总结

文章目录

  • 5614【SDOI2018】战略游戏

5614【SDOI2018】战略游戏

题意:给一个无向图,询问给一个点集 S S S,可以摧毁图中 S S S以外的任意一个点,求隔开 S S S中的随便两个点的方案数,多次询问, ∑ ∣ S ∣ \sum |S| S n n n同阶

考虑圆方树,将两个点割开的方案即为摧毁两个点(圆方树)路径上的任意一个点,所以将两个点割开的方案数即为两点路径上的圆点个数

统计圆点个数可以将点权放置边权,圆点->父亲边权为1,方点->父亲边权为0,预处理 f x f_x fx表示 x x x到根的边权和, ( u , v ) (u,v) (u,v)路径的权值即为 f u + f v − 2 ⋅ f l c a f_u+f_v-2\cdot f_{lca} fu+fv2flca

最终答案即为询问点构成的虚树的边权和,按 d f s dfs dfs序排序,然后 a n s = ∑ 1 ∣ S ∣ d i s ( S i , S i + 1 ) 2 + [ l c a ( S ) 为 圆 点 ] ans=\frac{\sum_1^{|S|} dis(S_i,S_{i+1})}2+[lca(S)为圆点] ans=21Sdis(Si,Si+1)+[lca(S)](假设 S ∣ S ∣ + 1 = S 1 S_{|S|+1}=S_1 SS+1=S1)

你可能感兴趣的:(题解题解,省选刷题)