lca
seeeagull
这个作者很懒,什么都没留下…
展开
-
[P1600][NOIP2016]天天爱跑步(lca+桶+差分)
填一下退役前(被我遗忘)的坑…… 读完题后首先想到的模拟过程,大概就是对于每个玩家的路径,一个点一个点地验证能否被观测到,把贡献加给该点。 要想写部分分的话,看到有一些数据s=1,也就是从根节点出发,那么只要路径上的点的深度(假设根节点深度为0)等于w值即可,于是可以给我们一个思路,一条路径上的点i能否被观测到,可由dep[i]和w[i]与这条路径的关系确定。 那么关系式长什么样呢?显然应该分成两部分考虑,由s到lca和由lca到t。稍微画几个图推一推可以发现,前半段观测条件为dep[i]+w[i]=原创 2020-08-29 11:09:15 · 206 阅读 · 0 评论 -
[P3703][SDOI2017]树点涂色(dfs序+LCT+LCA+线段树)
首先每次染色都是染一种新颜色,且一定从根开始,所以从根到一个节点的相同颜色都在一段内,不同颜色数即是颜色段数。 所以如果对于每个节点,维护一下它到根节点的不同颜色数,似乎操作2和3都可以求出了。对于操作2,用类似于树上差分的思路,x->y的颜色数=x到根的颜色数+y到根的颜色数-2*lca(x,y)到根的颜色数+1,因为每次都是染新颜色,所以两段的连接处不可能颜色相同,保证这样做是正确的。...原创 2019-05-15 23:27:11 · 121 阅读 · 0 评论 -
[P2597][ZJOI2012]灾难(拓扑排序+lca)
由于食物网中不含环,所以我们想到可以建一棵树,每个节点指向以它为食的点,这样统计灾难值时,只有它子节点的灾难值会对它直接产生影响。但是一个物种可能是多个物种的食物,所以一个节点会有很多复制点。于是修改建树方式,让一个节点的父节点为能决定它是否灭绝的点,即为它原先所有复制点的父节点的lca。所以建图时要从上往下建,也就是要先拓扑排序,保证所有指向节点i的节点,在i之前连到树上。最后求一下每个子树的大...原创 2019-05-12 08:45:34 · 133 阅读 · 0 评论 -
[P4175][CTSC2008]网络管理(LCA+树状数组+主席树)
求树上链的带修第k大,跟我上一篇的区间带修第k大其实思路差不多。区别见下。 只要先dfs一遍记录dfs序,就可以看成一个序列了。每个节点对应的线段树要维护从它到根的不同权值个数,所以每个节点会对以它为根的子树产生影响,所以树状数组修改时是区间修改而不再是单点修改。u到v的路径=u+v-lca(u,v)-lca(u,v)的父亲,所以查询时是四个位置一起跳。其他就没什么特别的了。 #includ...原创 2019-05-22 10:03:02 · 118 阅读 · 0 评论