随笔分类 - 图论
摘要:概是我太蒻了吧,大部分题解我不是很懂。 就是一个改版的最短路。由于一单位时间走一个距离单位,所以距离和时间等价。设 \(dis_{i, j}\) 代表到了 \(i\) 点,距离模上 \(k\) 是 \(j\) 的距离最小值。 先不管开放时间的限制。然后对于一个点,所有他可到达的点都可以如此更新。 设
阅读全文
摘要:我讨厌倍增 lca, 因此提供一种非倍增做法。 首先我们先解析题意。相当于在一棵树上给你一条链 A,然后又给你一个有着若干条链的集合 B。问你在 A 上的节点有多少个不存在于集合 B 中的任意链上。 前置的一个知识是我们如何不利用倍增来找在一条链上的点。 我们发现,一个点 s 在链 x, y上,当且
阅读全文
摘要:做法是简单的。 我们知道题目其实就是按照树节点的深度分类修改,那么直接用两个树状数组分别维护奇数层和偶数层的情况。 由于他俩各司其职,你也不需要在修改的时候会多修多的问题,保证不修少就好了。修改使用 dfn 来实现把树映射到序列上。最后查询的时候看一下查询的节点的深度来决定输出哪个树状数组的值。 哦
阅读全文
摘要:其实就是把一些简单操作换到了 dfn 上,然后需要动脑子想一下操作如何转化。 操作一是比较显然的。由于 dfn 是在 dfs 的基础上构成的,你记录一下每个点 \(i\) 的子树大小 \(siz_i\) 然后修改 \(dfn_i\) 到 \(dfn_i + siz_i - 1\) 范围内元素的值就可
阅读全文
摘要:直入正题。一个贪心发现你要让最小的路径尽可能大,这样是不是一下想到最大生成树,一个 kruskal 搞定 生成完之后最优解肯定在这棵树里,所以直接做最小值就行。 然而还有一个问题就是查询的两个点有可能不连通,那咋办呢?维护森林很麻烦,于是建一个虚点,向所有点连一个边权极小的边,再在这个图上做生成树,
阅读全文

浙公网安备 33010602011771号