
---------数据结构--------
Error Man
我是菜逼
展开
-
南昌网络赛 Distance on the tree(树上主席树,求 路径上边权 小于等于 k 的数量)
题目链接:芝麻开门 题意:给你一棵树,有q 个询问,问 u , v 路径上 边权 <= k 的边的数量; 思路:用主席树 维护 边权,代表 u 节点 到 根节点的信息,故有 c[lson[u]] + c[lson[v]] - 2 * c[lson[LCA]]; (这个画一画就能理解为什么和点权不一样) 代码: #include<cstdio> #include<...原创 2019-05-02 16:51:28 · 438 阅读 · 0 评论 -
LCA 倍增模版
倍增算法可以在线求树上两个点的LCA,时间复杂度为nlogn 预处理:通过dfs遍历,记录每个节点到根节点的距离dis[u],深度dep[u] i的2^j祖先就是i的(2^(j-1))祖先的2^(j-1)祖先: ///倍增算法 const int maxn = 1e5 + 10; int dis[maxn]; ///与根节点的距离 int dep[maxn]; ...原创 2018-08-11 16:15:12 · 224 阅读 · 0 评论 -
树链剖分
模版: 给定一棵树,有修改u,v节点路径上的信息,或修改 u 节点这颗子树的信息,或者查询链或 子树的信息 等操作。。。 可以一边操作一边查询。 日常解释用到的概念: 重儿子:父亲节点的所有儿子中子树结点数目最多(size最大)的结点; 轻儿子:父亲节点中除了重儿子以外的儿子; 重边:父亲结点和重儿子连成的边; 轻边:父亲节点和轻儿子连成的边; 重链:由多条重边连接而成的路径; ...原创 2019-05-11 19:00:03 · 169 阅读 · 0 评论