随笔分类 - 图论
摘要:传送门 题意:有 个勇者和 个怪物,第 个勇者有一个可杀怪物集合 ,每个勇者只能杀各自 中的一个怪物。 但是你有 瓶魔药,每一瓶都可以让一个勇者多杀一个 中的怪物。但是每个勇者只能吃一瓶药。问最多能杀多少个
阅读全文
摘要:传送门 题意:给定一张字符地图,# 代表墙,. 代表空地,D 代表门。初始每个空地都有一个人。 每个人可以在一秒内向上下左右移动一格。一个空地可以站任意多人。一个人走到门视作逃生成功。但是门很窄,一个时刻内只能有一个人进门。 问所有人逃生的最短时间。 。 注意到门一个时刻只能进一
阅读全文
摘要:传送门 很巧妙的转化。 给每个结点染色(标号),如果一条边两端同色,是重边;否则为轻边。 初始让每个结点分别设一个超级大的颜色。 每次修改,等价于把路径上的点修改为一个没有出现过的颜色。 用树剖维护即可。
阅读全文
摘要:D 给定一张图,分为左右各 个点,左右各自内部是一个完全图,左右之间有 条边。求这个图的最大团。 。 对于每个右部点,求出一个长度为 的二进制数,第 位是 表示它与左部第 点有连边。 枚举
阅读全文
摘要:妙题。 要求线段不相交,即要求连线长度总和最小。 黑点向白点连边,容量 ,费用为它俩的距离。 向黑点/白点向 连边,容量 费用 。跑最小费用最大流。 然后检查每个黑点是哪个边流了即可。 注意这里一定不能偷懒不开根号!否则原本 \(e1.cst<e
阅读全文
摘要:传送门 题意:给定一个 01 矩阵,每次可以交换两行或交换两列,要使最终每行每列都有一个 ,是否可行? 如果 ,则第 行和第 列连边。每行每列都有一个 ,相当于匹配数为 。 交换某行某列,对图的结构没有本质影响,所以对一
阅读全文
摘要:如果发现自己莫名其妙错了,可能是代码 UB,还开 O2!!!!!!!!!!! 传送门 首先,对于每个操作 2,将 连边。连边之后每个连通块内部可以在总和不变的情况下任意改变。 用并查集将每个连通块缩点,然后对于每个操作 1,将 连边。得到的图又会分成若
阅读全文
摘要:法一:类比基环树中的第二种处理方法 例题:仙人掌最大独立集 处理仙人掌图,可以先考虑在树上怎么做,然后在仙人掌里加一些对环的限制。 所有回边的影响,会在深搜树上的环顶被解决。此后就可以看作普通子树。 用 记录 的环顶, 表示 不属于任
阅读全文
摘要:模板题 朱刘算法。先讲不带优化的版本。记答案为 。 对于一张图,先把每个结点边权最小的入边选出来。如果有结点没有入边,无解;否则令 累加这些边的边权。 如果选出来的边不构成环,则这些边肯定构成了这张图的最小树形图。 否则考虑这个环。
阅读全文
摘要:有两种方法: 最大费用流。 把网络流作为贪心的工具。 建图:原图中的点也当作新图中的点。对于一条原图的边,新图中建两条:一条容量 费用 ,一条容量 费用 。(深海机器人的方法) 向所有入度 的点(还有出度 向
阅读全文
摘要:无向基环树找环,遍历模板: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int inf = 0x3f3f3f3f; int n; vector<int> e[500005]; bool vis[5
阅读全文
摘要:传送门 题意;找出最浅的点分树。 发现这是一个等价问题:给每个结点一个标号,当两个结点标号相同时,它们的路径上必有严格更小的标号。如果找到了这样一种标号方法,每个结点的标号就是它的深度。 同时我们还可以把每个结点的标号 对应到 ,也是一一对应。问题又变成路径上必有严格更
阅读全文
摘要:菜肴制作 要求把 排序,满足给定的所有条件,满足条件之后,编号越小要越靠前。(满足条件情况下,先让 1 最靠左,然后让 2 ……) 每个条件会给出两个数 ,表示 必须在 之前。 解: 看起来很像拓扑排序。于是我们对于每个条件 \(a,b\
阅读全文
摘要:简单的树上 dp 其实已经在普及组涉及过:自上而下和自下而上传递的性质。 现在我们需要研究更复杂的树上 dp,比如换根 dp 等等。 【树上 dp】 最大子树和 给出一棵带点权的树,求这棵树中的最大权连通块。 因为是无根树,我们人为规定 1 号结点为根。 表示以 为根
阅读全文
摘要:【什么是网络流】 一张带权图,给定了一个源点(起点)和一个汇点(终点)。 每个点比作一个中转站,源点比作一个水源,汇点比作一个洞。 每条边比作一条管道,边权比作上限。 现在要把水从源点输送到汇点,水经过若干中转站和管道到达汇点。 但是,每条管道单位时间内输送的水不能达到这条管道的上限(权)。 每个中
阅读全文
摘要:忘记打了,VP 了一把,前五题都是板子。 F 题意:坐标系上给定一个整点 ,求另一个整点 ,满足 组成的三角形面积为 (或说明无解)。 题解:由这三个点组成的三角形面积为 \(\dfrac{|ay-bx|}{2
阅读全文
摘要:【朴素 LCA】 LCA 是树的一个重要概念,意为两结点的最近公共祖先。 先给出朴素求 LCA 的代码。 int get_LCA(int u, int v) { if (d[u] > d[v]) swap(u, v); while (d[u] != d[v]) v = p[v]; while (u
阅读全文