随笔分类 -  图论

摘要:传送门 题意:有 n 个勇者和 m 个怪物,第 i 个勇者有一个可杀怪物集合 Mi,每个勇者只能杀各自 Mi 中的一个怪物。 但是你有 k 瓶魔药,每一瓶都可以让一个勇者多杀一个 Mi 中的怪物。但是每个勇者只能吃一瓶药。问最多能杀多少个 阅读全文
posted @ 2024-03-18 18:48 FLY_lai 阅读(9) 评论(0) 推荐(0) 编辑
摘要:传送门 题意:给定一张字符地图,# 代表墙,. 代表空地,D 代表门。初始每个空地都有一个人。 每个人可以在一秒内向上下左右移动一格。一个空地可以站任意多人。一个人走到门视作逃生成功。但是门很窄,一个时刻内只能有一个人进门。 问所有人逃生的最短时间。n12。 注意到门一个时刻只能进一 阅读全文
posted @ 2024-03-18 18:33 FLY_lai 阅读(8) 评论(0) 推荐(0) 编辑
摘要:传送门 很巧妙的转化。 给每个结点染色(标号),如果一条边两端同色,是重边;否则为轻边。 初始让每个结点分别设一个超级大的颜色。 每次修改,等价于把路径上的点修改为一个没有出现过的颜色。 用树剖维护即可。 阅读全文
posted @ 2024-03-11 18:20 FLY_lai 阅读(5) 评论(0) 推荐(0) 编辑
摘要:D 给定一张图,分为左右各 P 个点,左右各自内部是一个完全图,左右之间有 m 条边。求这个图的最大团。P20,mP2。 对于每个右部点,求出一个长度为 20 的二进制数,第 i 位是 1 表示它与左部第 i 点有连边。 枚举 阅读全文
posted @ 2024-03-10 16:23 FLY_lai 阅读(9) 评论(0) 推荐(0) 编辑
摘要:Hall's 定理:二分图 (X,Y,E) 有大小为 |X| 的匹配 对于 AX|N(A)||A|。(N(A) 表示 A 的邻域) Konig 定理:二分图最小点覆盖 = 最大匹配。 阅读全文
posted @ 2024-03-10 16:15 FLY_lai 阅读(32) 评论(0) 推荐(0) 编辑
摘要:妙题。 要求线段不相交,即要求连线长度总和最小。 黑点向白点连边,容量 1,费用为它俩的距离。s 向黑点/白点向 t 连边,容量 1 费用 0。跑最小费用最大流。 然后检查每个黑点是哪个边流了即可。 注意这里一定不能偷懒不开根号!否则原本 \(e1.cst<e 阅读全文
posted @ 2024-03-03 20:10 FLY_lai 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 题意:给定一个 01 矩阵,每次可以交换两行或交换两列,要使最终每行每列都有一个 1,是否可行? 如果 ai,j=1,则第 i 行和第 j 列连边。每行每列都有一个 1,相当于匹配数为 n。 交换某行某列,对图的结构没有本质影响,所以对一 阅读全文
posted @ 2024-03-02 17:04 FLY_lai 阅读(7) 评论(0) 推荐(0) 编辑
摘要:如果发现自己莫名其妙错了,可能是代码 UB,还开 O2!!!!!!!!!!! 传送门 首先,对于每个操作 2,将 ui,vi 连边。连边之后每个连通块内部可以在总和不变的情况下任意改变。 用并查集将每个连通块缩点,然后对于每个操作 1,将 ui,vi 连边。得到的图又会分成若 阅读全文
posted @ 2024-03-01 09:15 FLY_lai 阅读(6) 评论(0) 推荐(0) 编辑
摘要:法一:类比基环树中的第二种处理方法 例题:仙人掌最大独立集 处理仙人掌图,可以先考虑在树上怎么做,然后在仙人掌里加一些对环的限制。 所有回边的影响,会在深搜树上的环顶被解决。此后就可以看作普通子树。 用 up[x] 记录 x 的环顶,up[x]=0 表示 x 不属于任 阅读全文
posted @ 2024-02-29 08:58 FLY_lai 阅读(24) 评论(0) 推荐(0) 编辑
摘要:模板题 朱刘算法。先讲不带优化的版本。记答案为 ans。 对于一张图,先把每个结点边权最小的入边选出来。如果有结点没有入边,无解;否则令 ans 累加这些边的边权。 如果选出来的边不构成环,则这些边肯定构成了这张图的最小树形图。 否则考虑这个环。 阅读全文
posted @ 2024-02-28 22:35 FLY_lai 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目描述 题解 考虑黑用 1 表示,白用 0 表示,那么Alice要赢,就意味着每条边 xy 等价于 clr[x]clr[y]。连边也就是 的关系。 不妨编号从 0 开始,题目的染色方式则意味着 \(clr[x] 阅读全文
posted @ 2024-02-28 11:24 FLY_lai 阅读(18) 评论(0) 推荐(0) 编辑
摘要:有两种方法: 最大费用流。 把网络流作为贪心的工具。 建图:原图中的点也当作新图中的点。对于一条原图的边,新图中建两条:一条容量 1 费用 1,一条容量 + 费用 0。(深海机器人的方法)s 向所有入度 0 的点(还有出度 0阅读全文
posted @ 2024-02-28 08:36 FLY_lai 阅读(8) 评论(0) 推荐(0) 编辑
摘要:无向基环树找环,遍历模板: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int inf = 0x3f3f3f3f; int n; vector<int> e[500005]; bool vis[5 阅读全文
posted @ 2024-02-19 11:19 FLY_lai 阅读(14) 评论(0) 推荐(0) 编辑
摘要:传送门 题意;找出最浅的点分树。 发现这是一个等价问题:给每个结点一个标号,当两个结点标号相同时,它们的路径上必有严格更小的标号。如果找到了这样一种标号方法,每个结点的标号就是它的深度。 同时我们还可以把每个结点的标号 x 对应到 n+1x,也是一一对应。问题又变成路径上必有严格更 阅读全文
posted @ 2024-02-19 10:57 FLY_lai 阅读(6) 评论(0) 推荐(1) 编辑
摘要:菜肴制作 要求把 1n 排序,满足给定的所有条件,满足条件之后,编号越小要越靠前。(满足条件情况下,先让 1 最靠左,然后让 2 ……) 每个条件会给出两个数 a,b,表示 a 必须在 b 之前。 解: 看起来很像拓扑排序。于是我们对于每个条件 \(a,b\ 阅读全文
posted @ 2024-02-15 11:19 FLY_lai 阅读(28) 评论(0) 推荐(0) 编辑
摘要:简单的树上 dp 其实已经在普及组涉及过:自上而下和自下而上传递的性质。 现在我们需要研究更复杂的树上 dp,比如换根 dp 等等。 【树上 dp】 最大子树和 给出一棵带点权的树,求这棵树中的最大权连通块。 因为是无根树,我们人为规定 1 号结点为根。 dp[i] 表示以 i 为根 阅读全文
posted @ 2024-02-15 11:16 FLY_lai 阅读(17) 评论(0) 推荐(0) 编辑
摘要:【什么是网络流】 一张带权图,给定了一个源点(起点)和一个汇点(终点)。 每个点比作一个中转站,源点比作一个水源,汇点比作一个洞。 每条边比作一条管道,边权比作上限。 现在要把水从源点输送到汇点,水经过若干中转站和管道到达汇点。 但是,每条管道单位时间内输送的水不能达到这条管道的上限(权)。 每个中 阅读全文
posted @ 2024-02-14 11:24 FLY_lai 阅读(24) 评论(0) 推荐(0) 编辑
摘要:忘记打了,VP 了一把,前五题都是板子。 F 题意:坐标系上给定一个整点 (x,y),求另一个整点 (a,b),满足 (0,0),(x,y),(a,b) 组成的三角形面积为 1(或说明无解)。 题解:由这三个点组成的三角形面积为 \(\dfrac{|ay-bx|}{2 阅读全文
posted @ 2024-02-14 10:08 FLY_lai 阅读(12) 评论(0) 推荐(0) 编辑
摘要:【无向图三元环计数】 定义一个有向图 G:把 G 中每条边改成从度数小的点指向度数大的点 的有向边。 性质:G 中每个点的出度 2m。 证明:若 u 的出度 >2m,则显然 u 在原图中的度数 \(>2\sq 阅读全文
posted @ 2024-02-09 09:36 FLY_lai 阅读(64) 评论(0) 推荐(0) 编辑
摘要:【朴素 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 阅读全文
posted @ 2024-02-05 14:32 FLY_lai 阅读(11) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示