虚树
蜗角虚名羊
这个作者很懒,什么都没留下…
展开
-
bzoj2286: [Sdoi2011]消耗战(虚树)
题目题解Solution首先把询问点根据原树dfsdfsdfs序排序,显然这些点都要出现在虚树中来,而且为了保证结构不被破坏,另外一些跟他们有关系的点都要加入到虚树中来我们用一个栈维护原树上的一条链,自栈底到栈顶,深度由小变大每次考虑插入询问点进栈如果插入点的祖先是栈顶元素,那么直接插入即可,因为反正是一条链上的结点如果不是的话,那么只有可能分居他们的lcalcalca的两棵子树中...转载 2019-03-11 08:56:18 · 156 阅读 · 0 评论 -
bzoj5329: [Sdoi2018]战略游戏
题目题解Solution问题可转化成求点集之间两两的路径并Code#include<bits/stdc++.h>using namespace std;const int N=300002,M=100002;struct node{ int to,ne;}e[N<<1],E[M<<2];int fa[N][20],dep[N],TOT,to...转载 2019-03-11 11:42:18 · 187 阅读 · 0 评论 -
bzoj3572: [Hnoi2014]世界树
题目题解构建虚树以后两遍dpdpdp处理出虚树上每个点最近的议事处然后枚举虚树上每一条边,考虑其对两端点的答案贡献可以用倍增二分出分界点如果aaa,bbb的分界点为midmidmid,aaa,bbb路径上aaa的第一个儿子为xxx则对aaa的贡献是size[x]−size[mid]size[x]-size[mid]size[x]−size[mid]对bbb的贡献是size[mid]−...转载 2019-03-12 10:21:08 · 142 阅读 · 0 评论