随笔分类 - C 图论 - 最近公共祖先 LCA
摘要:link 这道题一眼看上去就很不一样,但从题意的 m + 1 个区域和 m 个栅栏很容易想到,这应该是个树上的问题。 题目里的圆有很好的性质:圆之间不相交,只存在包含与相离的位置关系 摸一下样例,发现就是一个起点,必须越过多少个圆能到达终点 如果把这些圆抽象地理解一下,就是(u, v)路径上的点,同
阅读全文
摘要:link 一眼看上去没什么思路,手摸一下样例,发现有不同性质的点对求解想法很不一样,考虑先分类讨论看看。 从简单的约束到强的约束分类讨论,这样更可做,也更好讨论, 比如首先我就想到两点是否重合,然后所求点一定要到两点的距离相等,我就想到路径长度的奇偶性,接着就考虑复杂的深度关系 ...... 对于当
阅读全文
摘要:link 求操作后的所有路径中边权和最长的边的最小值,二分 考虑 对答案的最短时间二分,每次得到一个二分值 mid 显然,我们主要关心 路径和比 mid 大的运输路径,这里要维护树上两点间的路径,所以要用到 lca,同时可以记录每个点的距离(1 -> x) ,这样可以用边前缀和直
阅读全文
摘要:题目 二话不说,直接按题意模拟暴搜,当然 的复杂度显然是寄了的。 不过,在模拟的过程中,我在链式前向星的删边中居然一开始错了,还是要 mark 一下以后注意。 void del(int x, int pre) { e[top].to = e[top].next = 0; h[x]
阅读全文