树上倍增
Lifel
dcoi 蒟蒻一枚 欢迎交流~~~qq:1627767186
展开
-
bzoj1602[Usaco2008 Oct]牧场行走(lca模版)
Lca裸题#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #define fo(i,a,b) for(int i=a;i<=b;i++) #define fod(i,a,b) for(int i=a;i>=b;i--) using namespace std; cons原创 2017-09-05 16:58:01 · 330 阅读 · 0 评论 -
bzoj1787 [Ahoi2008]Meet 紧急集合 树上倍增
树上给出任意三个点,找出一个点使它到三个点的距离之和最小 结论:枚举任意两个点的lca,求出距离取最小值 伪证一发: 首先考虑x,y两个点的情况,显然lca(x,y)是最小值,加入第三个点z后,可以看成a,b,已将在lca(a,b)的一个点,向上的花费为2.而z的花费为1.为了是花费最小.考虑让z跳到lca(a,b),枚举lca(a,b)即可 PS:倍增难得1A的题(bzoj1977WA了一原创 2017-09-06 08:31:10 · 325 阅读 · 0 评论 -
bzoj1977: [BeiJing2010组队]次小生成树 Tree 树上倍增
求严格次小生成树 用倍增记录最小值和次小值+求lca,枚举每一条非树边,然后转移更新PS:dfs时注意最小值和次小值的转移#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #define fo(i,a,b) for(int i=a;i<=b;i++) #define f原创 2017-09-06 10:55:18 · 247 阅读 · 0 评论