[SDOI2018]战略游戏,洛谷P4606,圆方树+虚树
正题
看到这样的性质就可以想到圆方树,而两点之间贡献的答案就是路径上的圆点数量,为了去重,我们只需要将虚树建出来求路径上的点权和就行了,实际上并不需要建出来,可以发现按照dfs序排一下之后就可以考虑欧拉回路,只需要将每个点的深度加起来-相邻两点的lca深度即可,这里的深度是带权深度,相当于点到根的圆点数量,最后这个虚树的权值也并不是正确的,因为在所有点的lca的父亲到根节点的圆点实际上并不会贡献答案,减一下就可以了.
#include<bits/stdc++.h>
using ...
原创
2020-09-16 08:30:27 ·
143 阅读 ·
0 评论