LCA
crazy morning
去西之西处,驾驭长风
展开
-
P2680 [NOIP2015 提高组] 运输计划
题目题目思路一个带边权LCA+二分答案(check使用树上差分)code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath> using namespace std;int fa[500010][27],head[500010],c[500010],cf[5000原创 2021-03-26 18:57:58 · 72 阅读 · 0 评论 -
P3128 [USACO15DEC]Max Flow P
题目题目思路LCA+树上差分板子code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath> using namespace std;int fa[500010][27],head[500010],c[500010],cf[500010],uo[500010],x原创 2021-03-25 21:00:22 · 59 阅读 · 0 评论 -
P4281 [AHOI2008]紧急集合 / 聚会
题目题目思路显然的LCAcode:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath> using namespace std;int fa[500010][27],head[500010],c[500010],x,y,z;struct f{ int to,ne原创 2021-03-25 20:35:40 · 69 阅读 · 0 评论 -
P3258 [JLOI2014]松鼠的新家
题目题目思路显然的lca,重点在于如何+1.我们考虑树上差分。我们先考虑前缀和:所有子节点的前缀和+本节点的差分值有了前缀和的定义,我们就要考虑如何差分了。显然,从x到lca(x,y)是需要x+1,lca(x,y)的父节点-1的,但是我们还需要把y到lca(x,y)这条路径+1,同理,y+1,lca(x,y)的父节点+1,但会发现lca(x,y)多了一次,所以lca(x,y)-1。处理一下细节:根据题意,发现我们从第2个访问的点开始,都不需要再把他们+1了(前面的终点已经+1了),所以在求原创 2021-03-22 21:18:41 · 74 阅读 · 0 评论 -
P3398 仓鼠找sugar
题目题目思路经过手玩样例发现,2条路径相交,当且仅当其中一条的LCA在另一条路径上然后根据结论写代码code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath> using namespace std;int fa[500010][27],head[500010原创 2021-03-20 10:37:23 · 57 阅读 · 0 评论 -
P1967 [NOIP2013 提高组] 货车运输
题目题目思路显然先来一个最大生成树,然后我们用LCA求路径最小值即可。code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath>using namespace std;long long fa[100010][22],v[100010][22],head[500原创 2021-03-20 10:10:12 · 120 阅读 · 0 评论 -
P3379 【模板】最近公共祖先(LCA)
题目题目思路一个倍增思想求第2j2^j2j个祖先(类似ST表),然后就可以了code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath> using namespace std;int fa[500010][27],head[500010],c[500010],x原创 2021-03-20 09:29:42 · 53 阅读 · 0 评论 -
P6374 「StOI-1」树上询问
题目题目思路根据一系列的手推一系列的数据后,发现:若c为LCA(a,b),则输出n-a的子树大小-b的子树大小若c在a->LCA(a,b)的路上,输出c的子树大小-a的子树大小同理,若c在b->LCA(a,b)的路上,输出c的子树大小-b的子树大小若上面全不是,输出0.code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#inc原创 2021-03-20 09:27:46 · 126 阅读 · 0 评论 -
P4180 [BJWC2010]严格次小生成树
题目题目思路最小生成树都会吧?不会的戳这里接下来我们用LCA求每一条非树边在树上环的最大边权和次大边权,然后求一个min(s-mx+v,s-mx2+v,mn)就可以了,注意如果mx=v,第一项不比较.code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath>u原创 2021-03-20 08:50:09 · 106 阅读 · 1 评论