树上倍增
基础是LCA,还有很多其他运用
不拿牌不改名
ACM刚入门,博客写错了可以留言给我啊
展开
-
树上倍增 美团2017年CodeM大赛-复赛 A题 城市网络
城市网络题目描述有一个树状的城市网络(即 n 个城市由 n-1 条道路连接的连通图),首都为 1 号城市,每个城市售卖价值为 ai 的珠宝。你是一个珠宝商,现在安排有 q 次行程,每次行程为从 u 号城市前往 v 号城市(走最短路径),保证 v 在 u 前往首都的最短路径上。 在每次行程开始时,你手上有价值为 c 的珠宝(每次行程可能不同),并且每经过一个城市时(包括 u 和 v ),假如那...原创 2020-05-05 16:49:31 · 359 阅读 · 0 评论 -
LCA结论题 [AHOI2008]紧急集合 / 聚会(洛谷 P4281)
[AHOI2008]紧急集合 / 聚会题目大意:给你一颗n个结点的树,然后给你m个3元组(x,y,z);知道到一个点,这个点到x,y,z的距离和最小;结论:x,y,z两两求lca,会发现有两个lca相等,不相等的那个lca就是最小距离点,根据这个点求最小距离和即可;代码:#include<bits/stdc++.h>#define LL long long#define...原创 2020-04-29 22:51:29 · 233 阅读 · 0 评论 -
LCA+最大生成树 货车运输(洛谷 P1967)
货车运输题目描述A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。输入格式第一行有两个用一个空格隔开的整数 n,m,表示 A 国有 n 座城市和 m 条道路。接下来 m 行每行三个整数 x,y,z,每两个整数之间用一个空格隔开,表示...原创 2020-04-12 17:32:00 · 152 阅读 · 0 评论 -
LCA判公共点 仓鼠找sugar(洛谷 P3398)
仓鼠找sugar题目描述小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n。地下洞穴是一个树形结构。这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c)到图书馆(d)。他们都会走最短路径。现在小仓鼠希望知道,有没有可能在某个地方,可以碰到他的基友?小仓鼠那么弱,还要天天被zzq大爷虐,请你快来救救他吧!输入格式第一行两个正整数...原创 2020-03-19 19:04:52 · 76 阅读 · 0 评论 -
最近公共祖先(LCA) 学习笔记
最近公共祖先(LCA)顾名思义,就是两个结点的最近公共父结点;这里运用了倍增的思路,当你想要一个个的往上递增时,复杂度很高,可以把要递增的数量换成二进制表示(因为任意一个数都可以由二进制数相加得到);比如11,可以由 2^3=8,2 ^1=2, 2 ^0=1,相加而成;所以11这个数可以先加8,在加2,在加1得到;这里有两个预处理,一个是得到每个结点所在的层数,一个是得到每个结点往上走2的...原创 2020-03-15 22:16:22 · 128 阅读 · 0 评论