摘要: 题目就是询问将树上哪一条边的权重设为0之后,给定的m条路径的长度的最大值的最小。 我们先考虑序列上怎样做,再扩展到树上。我们先将边权转化为点权,对于最大值最小的问题,考虑二分答案。问题就转化为:是否存在一个数,权值为0之后,所有给定路径的长度和都小于等于mid(其实也就是最大值 \(\leq\) m 阅读全文
posted @ 2020-10-06 14:43 王雨阳 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 树链剖分,将树上的一段路径划分为log条重链,用线段树统计答案。 dfs2时先遍历重儿子,遍历轻儿子时注意判重,注意重新分配的编号 。 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #inc 阅读全文
posted @ 2020-10-06 14:20 王雨阳 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 线段树合并裸题。线段树的下标维护的是能力指数,需要离散化。统计答案可以在线段树上查询后缀和。 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> using n 阅读全文
posted @ 2020-10-06 14:16 王雨阳 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 我们在每一个节点上建立一个动态开点的线段树,最初只有根节点,线段树的叶节点下标维护的是物品类型,值为这种物品的个数。对于将x到y的路径上同时发放类型为w的物品,我们可以采用树上差分。这是对于点的差分,方法为:v[x] += 1, v[y] += 1, v[lca(x,y)] -= 1, v[ fa[ 阅读全文
posted @ 2020-10-06 14:12 王雨阳 阅读(143) 评论(0) 推荐(0) 编辑