摘要: \(dsu on tree\) 定义: 这里简称 \(dsu\) 好了。 这个主要是用来解决一类树上询问问题,一般有两个特征: 只有对子树的询问 没有修改 这时候就可以用 \(dsu\) 了。 可能特征 \(1\) 不显然,题目中不明确问你子树 \(i\) 的答案,需要把问题转化后算子树 \(i\) 阅读全文
posted @ 2021-09-28 21:58 Evitagen 阅读(76) 评论(1) 推荐(1) 编辑
摘要: 树的重心 分析: 就是在深搜的时候记录这个点的两边子节点的最大值 如果小于等于这个树上的点的数量的一半,就是重心。 代码长这样: void dfs1(int x,int fa){ sizes[x]=wei[x]=1; for(int i=head[x];i;i=nxt[i]){ int y=ver[ 阅读全文
posted @ 2021-09-28 20:04 Evitagen 阅读(49) 评论(0) 推荐(0) 编辑
摘要: \(ST\) 表 引入: \(ST\) 表是用于解决可重复贡献问题的数据结构。 ​ 可重复贡献问题 是指对于运算 \(opt\) ,满足 \(x opt x=x\) ,则对应的区间询问就是一个可重复贡献问题。 例如,最大值有 \(max(x,x)=x\) ,\(gcd\) 有 \(gcd(x,x)= 阅读全文
posted @ 2021-09-28 17:08 Evitagen 阅读(72) 评论(0) 推荐(0) 编辑
摘要: CF911F Tree Destruction 题意: (洛谷上写的中文题意太离谱了) 给定一棵树,要求选择两个节点,并把之间距离添加到答案中,然后删去一个点,再次进行这样的操作.... 进行 \(n-1\) 次后,只剩一个顶点,询问最大答案,并且输出每次选择的两个点和删去的那个点。 分析: 什么情 阅读全文
posted @ 2021-09-28 16:17 Evitagen 阅读(55) 评论(0) 推荐(0) 编辑