摘要:Solution 用$col$记录 数量最多的种类, $sum$记录 种类$col$ 的数量。 然后问题就是树上链修改, 求 每个节点 数量最多的种类。 用树上差分 + 线段树合并更新即可。 Code 1 #include<cstdio> 2 #include<cstring> 3 #include
阅读全文
摘要:Solution 先Tarjan求出点双联通分量 并缩点。 用$multiset$维护 点双内的最小点权。 容易发现, 点双内的最小点权必须包括与它相连的割边的点权。 所以我们必须想办法来维护。 所以考虑用割点的点权更新它的父节点, 这样查询 点双 内的最小点权只需要查询本身的 $multiset$
阅读全文
摘要:Solution Tarjan 点双缩点, 加上树上差分计算。 注意特判。。。 我特判挂了好久呜呜呜 Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<vector> 5 #define rd r
阅读全文
摘要:codevs : 传送门 Description 上帝手中有着N 种被称作“世界元素”的东西,现在他要把它们中的一部分投放到一个新的空间中去以建造世界。 每种世界元素都可以限制另外一种世界元素,所以说上帝希望所有被投放的世界元素都有至少一个没有被投放的 世界元素能够限制它,这样上帝就可以保持对世界的
阅读全文
摘要:传送门 题解 题意 = 找出无向基环树森林的每颗基环树的直径。 我们首先需要找到每颗基环树的环, 但是因为是无向图,用tarjan找环, 加个手工栈, 我也是看了dalao的博客才知道tarjan找无向图环 : dalao的链接 然鹅大佬的方法有一点小问题, 无法找出只有两个节点的环,改动后代码:
阅读全文
摘要:描述: 就是求一个次小生成树的边权和 传送门 题解 我们先构造一个最小生成树, 把树上的边记录下来。 然后再枚举每条非树边(u, v, val),在树上找出u 到v 路径上的最小边$g_0$ 和 严格次小边 $g_1$ 如果$val > g_0$就可以考虑把$g_0$ 替换成$val$ 并记录答案。
阅读全文
摘要:题目: 传送门 题解: 首先我们考虑$K = 1$的情况,由于原图是一棵树, 所以每一条边都要走两次, 即总距离为$2 * ( n - 1)$ 如果我们添加一条边, 就会形成一个环, 并且由于必须经过添加的边一次, 所以组成这个环的边都只经过一次。 所以添边后的总距离为$2 * (n - 1) -
阅读全文