随笔分类 - 树 最近公共祖先
摘要:【题目】2017"百度之星"程序设计大赛 - 初赛(A) 【题意】给定n个点的带边权树,m条编号1~m的路径,Q次询问编号区间[L,R]所有链的交集的长度。n<=500000。 【算法】线段树+RMQ-LCA+树链的交 【题解】树链的交:记一条链为(a1,b1),LCA为c1。另一条链为(a2,b2
阅读全文
摘要:【题目】D. Best Edge Weight 【题意】给定n个点m条边的带边权无向连通图,对每条边求最大边权,满足其他边权不变的前提下图的任意最小生成树都经过它。n,m<=2*10^5,1<=wi<=10^9。 【算法】最小生成树+倍增LCA+并查集 【题解】首先求出图的一个最小生成树M,则所有边
阅读全文
摘要:【题意】给定n个点的树,m次询问,每次给定ki个特殊点,一个点会被最近的特殊点控制,询问每个特殊点控制多少点。n,m,Σki<=300000。 【算法】虚树+倍增 【题解】★参考:thy_asdf 对询问建立虚树,然后DFS统计虚树上每个点被哪个点控制,记为belong[x]。 统计的方法是从下往上
阅读全文
摘要:【题意】给定n个点的带边权树,每次询问给定ki个特殊点,求隔离点1和特殊点的最小代价。n<=250000,Σki<=500000。 【算法】虚树+DP 【题解】考虑普通树上的dp,设f[x]表示隔离1和子树x内特殊点的最小代价,val[x]表示x到1路径上的最小代价(预处理)。 点x特殊,f[x]=
阅读全文
摘要:【题意】给定带边权仙人掌图,Q次询问两点间最短距离。n,m,Q<=10000 【算法】圆方树处理仙人掌问题 【题解】树上的两点间最短路问题,常用倍增求LCA解决,考虑扩展到仙人掌图。 先对仙人掌图建圆方树,圆圆边和原图边权一致。对于每个方点代表的环,记深度最小的点为x,则圆方边的边权是圆点到x的最短
阅读全文
摘要:【题意】给定n个点的树,m次求[a,b]和[c,d]中各选出一个点的最大距离。abcd是标号区间,n,m<=10^5 【算法】LCA+树的直径理论+线段树 【题解】 树的直径性质:距离树上任意点最远的点一定是直径的一端。此结论在点集中依然试用。 那么根据性质,容易得到答案路径的两端一定是[a,b]直
阅读全文
摘要:【题意】给定n个点的树,每个点属于一个分类,求每个分类中(至少有2个点)最远的两点距离。n<=200000 【算法】LCA 【题解】结论:树上任意点集中最远的两点一定包含点集中深度最大的点(求树的直径的结论是该结论的特殊情况) 证明:如果有路径不包含深度最大的点,那么用深度最大的点替换在LCA同一侧
阅读全文
摘要:【算法】可持久化线段树(主席树)+启发式合并+LCA 【题意】给定森林,每次询问u,v路径上的第k小,或给u,v连边(保证森林),n<=8*10^4。 【题解】 区间第k小:离散化,在上一个位置的基础上建可持久化权值线段树,每次比较左子树和k并找到第一个大于等于k的位置。 树上第k小:每个点上其父亲
阅读全文
摘要:【算法】最近公共祖先(LCA) 【题解】 点x,y到最近公共祖先z的距离之和相当于x,y到根的距离减去两倍z到根的距离, 即ans=dis[x]+dis[y]-2*dis[z] 记得边数组要开两倍!!!T_T #include<cstdio> #include<algorithm> using na
阅读全文
摘要:【算法】树链剖分+线段树 【题解】线段树的区间加值和区间覆盖操作不能同时存在,只能存在一个。 修改:从根节点跑到目标区域路上的标记全部下传,打完标记再上传回根节点(有变动才需要上传)。 询问:访问到目标区域路上的标记全部下传。 我写的线段树版本是在打标记的同时便对该点的询问项(最大值)做了对应更改,
阅读全文
摘要:★ 无向无环连通图=树 树上路径问题除了考虑树链剖分,还可以考虑离线树上差分。 树上路径差分:x到根+y到根-lca(x,y)到根+fa[lca(x,y)]到根 【最近公共祖先(LCA)】 http://blog.csdn.net/wendavidoi/article/details/5067005
阅读全文
摘要:【算法】最大生成树+LCA(倍增) 【题解】两点间选择一条路径最小值最大的路径,这条路径一定在最大生成树上,因为最大生成树就是从边权最大的边开始加的。 先求原图的最大生成树(森林),重新构图,然后用一个超级根连向每棵树的根。 对于每个询问,在树上跑z=LCA(x,y),答案就是x到z,z到y路上的最
阅读全文
摘要:【算法】 【算法】网络流 【算法】树 【算法】数学 ————【专题】生成树计数(矩阵树定理) ————【专题】计数问题(排列组合,容斥原理,卡特兰数) ————【算法专题】卡特兰数(计数数列) ————【专题】数论 ————【专题】概率和期望 【算法】动态规划 【算法】数据结构 ————【专题】平衡
阅读全文