随笔分类 -  树 - LCA

摘要:在一棵树上,我们要求点 $(u,v)$ 之间路径的第$k$大数。 对于点 $i$ ,建立 $i$ 到根节点的一棵前缀主席树。 简单容斥后不难得出结果为$sumv[u]+sumv[v]−sumv[lca]−sumv[fa[lca]]$ 其他的和主席树是一样的。 Code: 阅读全文
posted @ 2018-10-18 20:22 EM-LGH 阅读(161) 评论(0) 推荐(1)
摘要:两点之间边权最大值的最小值一定在图的最小生成树中取到。 求出最小生成树,进行倍增即可。 Code: 阅读全文
posted @ 2018-10-17 00:07 EM-LGH 阅读(155) 评论(0) 推荐(0)
摘要:本题并不需要并查集,每次查询一次最近公共祖先,并倍增求出需要被新标记的路径。这样保证时间复杂度是 O(nlogn)O(nlogn)O(nlogn) 的。Code:#include#includeusing namespace std;const int ma... 阅读全文
posted @ 2018-10-15 16:03 EM-LGH 阅读(185) 评论(0) 推荐(0)
摘要:裸题,如此之水…Code:#include#includeusing namespace std;const int maxn = 100000 + 4;const int logn = 25;int f[logn][maxn], head[maxn dep... 阅读全文
posted @ 2018-09-01 12:38 EM-LGH 阅读(176) 评论(0) 推荐(0)