
LCA
twh233
嘻嘻
展开
-
hdoj 2586
#include #include #include #include using namespace std; //#pragma comment(linker, "/STACK:102400000,102400000") //不需要申请系统栈 const int N = 40010; const int M = 25; int dp[2*转载 2017-05-07 00:41:26 · 392 阅读 · 0 评论 -
poj 3417 Network 树上差分+LCA
题意:先给一棵具有n个节点的树, 然后再给出m条边, 问从树上删去一条边, 再从m条边中删去一条边, 把这个图分成至少两部分的方案数做法:我们知道再树上每加一条边树上一定有环, 假设我们将在环上的树边的累加标记都加一, 表示被一条m中的边所覆盖, 然后我们在分析, 对于一颗树我们删去任意一条边, 树一定会被分成两部分, 那么如果被删去的边的累加标记>=2, 说明有>=2条...原创 2018-09-24 17:47:02 · 220 阅读 · 0 评论 -
zoj3195 树上三点的最短距离
题目链接题意:大概说给一棵树,每次询问三个点,问要把三个点连在一起的最少边权和是多少。 连接(a,b,c)三个点的最短边权和=(dist(a,b)+dist(b,c)+dist(a,c))/2 /// .-~~~~~~~~~-._ _.-~~~~~~~~~-./// __.' ~....原创 2018-09-24 01:09:31 · 725 阅读 · 0 评论 -
POJ 2763 Housewife Wind(LCA+树状数组+DFS序 改变边权
题目链接题意: 知道了一颗有 n 个节点的树和树上每条边的权值,起点为s,对应两种操作: 0 x 输出 当前节点到 x节点的最短距离,并移动到 x 节点位置 1 x val 把第 x 条边的权值改为 val 做法:首先这肯定是需要LCA求公共祖先的点,其实对于改变边权的操作,可以记录每条边的一个端点,对其左区间+ 右区...原创 2018-09-24 01:07:09 · 234 阅读 · 0 评论 -
Codeforces Round #425 (Div. 2) D. Misha, Grisha and Underground (LCA
题意:给定一颗树(n<=1e5),并有q(<=1e5)次询问,每次询问指定三个点a,b,c:意思是有两个人任选两个点作为各自起点,剩下的那个点作为终点,两个人各自从起点走向终点,求路径上重合的点数,现在要求在这三个点可能的选择方式中,求重合点数的最大值。 做法:两两分别求LCA,找到深度最深的那个点,肯定就是我们要找的终点了,然后max(1,2,3)即可 /// ...原创 2018-09-23 22:02:54 · 300 阅读 · 0 评论 -
UVA - 11354 Bond (最小生成树+LCA
题目链接题意:给出一张n个点m条边的无向图, 每条边有一个危险度,有q个询问, 每次给出两个点s、t,找一条路, 使得路径上的最大危险度最小。 做法:首先考虑到需要最大危险度最小,那么对于一个无向图很容易想到最小生成树,其次如果我生成最小生成树之后进行LCA更新其路径最大值,那么即可解决本题。 /// .-~~~~~~~~~-._ ...原创 2018-09-23 20:34:48 · 237 阅读 · 0 评论 -
Wannafly挑战赛1 A Treepath LCA
https://www.nowcoder.com/acm/contest/15/A观察到路径x->y的长度的奇偶性只与x到根的长度的奇偶性以及y到根的长度的奇偶性有关(令dist[x]表示x到根的距离,x到y的距离为dist[x]+dist[y]-2dist[lca],最后一项对奇偶性没影响,所以真正有用的信息包含在dist[x]和dist[y]里,不难想到当这两个数奇偶性相同时路径长原创 2017-11-23 13:24:26 · 203 阅读 · 0 评论 -
UESTC - 92 LCA 倍增
Bob has traveled to byteland, he find the NN cities in byteland formed a tree structure, a tree structure is very special structure, there is exactly one path connecting each pair of nodes, and a原创 2017-05-08 22:22:33 · 580 阅读 · 0 评论 -
hdu 2586 tarjan 板子
hdu 2586tarjan#include #include int const MAX = 40005;struct Edge{ int id, val; //当前边序号,边权 int next; //下一条}e[2 * MAX];int n, m, cnt;//x, y表示询问的起点和终点,z是x和y的LCAint x[MAX], y[MAX],原创 2017-07-28 18:13:12 · 414 阅读 · 0 评论 -
POJ 3728 The merchant(LCA经典最大值最小值差值
题目链接题意:给N个城市,每个城市的货物的价格,现在你可以先买后卖,问Q次询问中,从起点到终点最多能拿多少利润。 做法:假设起点终点为u,v;祖先为t我们可以想一下两点间的最大差有多少种情况。 ①公共祖先到终点的最大值-起点到公共祖先的最小值(u-t,t-v) ②起点到公共祖先的最大值-之后起点到公共祖先的最小值(u-t) ③公共祖先到终点的最大值-之后终...原创 2018-09-25 01:02:54 · 351 阅读 · 0 评论