随笔分类 - 图论
摘要:upd: 单向连边 $a \rightarrow b$ ,显然应该在每一轮搜索中标记 $b$ 集合的点。我误标记了 $a$ ,这样就没有任何 $a$ 类节点可以更改匹配了,完蛋。 c++ bool hungary(int p, int id) { for (int i = Fs[p]; i; i =
阅读全文
摘要:owo [BZOJ 3681] Arietta 持久化,每次新建节点,避免影响之前的树。 [AGC 006 F] Blackout 统计每个弱连通分量,三个颜色染色之后把点重新编号,每个点为起点的边都可以用一个数字 $v$ 表示,意义是按照 $0,1,2$ 的顺序,边的终点在位置 $v$ 。这样每个
阅读全文
摘要:各种小知识点 Kruskal 重构树 Steiner 树 两道例题: "BZOJ3205 APIO2013 机器人" "BZOJ2595 WC2008 游览计划" 求 $N$ 个点的连通无向图中至少包含给定的 $K$ 个点的最小生成树。 $S$ 表示连通状态, $p$ 是当前状态中用来考虑转移的节点
阅读全文
摘要:题目大意:给 $n\ (n\le 100,000)$ 个三元组,保证每个数每一维构成 $[1,n]$ 的排列,定义大于表示一个数至少两维比另一个数大,求某个顺序比较之后可能是最大的数的数具体是哪些。 大于不具有传递性。 入度为 $0$ 的点一定可以是最大值,只要从这个点开始,每次随便找一个其他点比较
阅读全文
摘要:A 做法 $f(p)=g(p)+h(p)$ , $f(p)$ 作为优先队列比较函数用来比较的值, $g(p)$ 是当前路径到 $p$ 的距离, $h(p)$ 是 $p$ 点到终点最短路(预处理可以得到)。 每个点出队次数 $k$,就说明当前找到的是到这个点的 $k$ 短路。 关键代码 一道裸题: 【
阅读全文
摘要:Disjoint Set Union On Tree ,似乎是来自 Codeforces 的一种新操作,似乎被叫做“树上启发式合并”。 在 不带修改的有根树子树信息统计 问题中,似乎树上莫队和这个 DSU On Tree 是两类常规操作。 先对树按轻重链剖分。对于每个节点,先计算轻儿子为根的子树信息
阅读全文
摘要:0-1BFS问题是指最短路问题中,边权只有 0 和 1 的特殊情况。写法类似 SPFA + SLF(Small Label First) 优化。需要一个 deque 。把权值 0 的边扩展到的点放到队首,权值 1 的边扩展到的点放到队尾。时间复杂度 O(V + E) 。 这好像是个挺重要的知识点,有
阅读全文
摘要:#238. 蔡老板分果子 统计 描述 提交 自定义测试 春天来了,万物复苏,动物们又到了发情的季节。蔡老板终于下定决心砍下了自家后院的两棵果树,并决定和自己喜欢的人一起分享果树上的果子。 这两棵果树一棵是长生果树另一棵是人参果树,两棵树上都有 nn 个果子,编号为 1∼n1∼n,并分别由 n−1n−
阅读全文
摘要:1. 树上倍增 f[i][k] 表示节点 i 向上第 2k 个节点。mx 是树的最大深度。 预处理: 先 DFS 得到 f[i][0] ,然后: 求 LCA : 2. 欧拉序+RMQ DFS 得到树的欧拉序列,记录每个点在欧拉序列中第一次出现的位置 pos[i] 。 x, y 的 LCA 即为欧拉序
阅读全文
摘要:分块思想,机智的建图。 1.n = min(sqrt(N), 100) ……设一个玄学限制,跑得会快很多。 2.SPFA 不要加 LLL 也不要加 SLF 优化!千万不要加!不然九十八! 我写了发 SPFA ,时间略卡。可能 Dijkstra 在这道题会更优秀一些吧…… 1 #include <st
阅读全文
摘要:这题很有意思,这题数据很强,会卡掉很多没考虑特殊情况的代码。 先缩点,然后根据拓扑序,依次更新每个点的路径数。f[i] 表示 i 到 N+1 号点的路径数量,则 f[x] = Σf[y] ,满足条件:有一条边从 x 到 y 。f[N+1] = 1. 可以存个反图,然后在拓扑序上从前往后讨论,更新 f
阅读全文
摘要:敲了一个树剖模板,顺便复习了一下动态开点的线段树. NKOJ需要扩栈! 题目 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个
阅读全文
摘要:ans 表示最小生成树中的边权和 Prim 概述:从点集(初始时为任意一个点)可以到达的点(不在该点集中)中,选离该点集距离最短的一个,加入该点集,更新 ans 。重复上面的操作直到没有点可以到达(优先队列为空)。如果这时点集中点的数量不等于原图点的数量说明原图不是连通图,无解。 Kruskal 概
阅读全文
摘要:测试题目 NKOJ1107 达喀尔拉力赛 方法一 Bellman-Ford. 计算 S 到任意点的最短路得到 dis[i], 计算任意点到 T 的最短路 sid[i], 枚举每一条边,假设这条边从 x 到 y, 权值 w. 显然次短路长度就是 min{ dis[x] + w + sid[y] } .
阅读全文
摘要:测试题目:NKOJ1120 NKOJ3639 最常见的 BFS 实现 1 #include <stdio.h> 2 #include <queue> 3 #include <vector> 4 5 typedef long long LL; 6 7 using namespace std; 8 9
阅读全文
摘要:测试题目:NKOJ1120 NKOJ3639 1 #include <stdio.h> 2 #include <vector> 3 #include <queue> 4 5 using namespace std; 6 7 typedef long long LL; 8 9 const int _N
阅读全文
摘要:A题: 网络流最大流模型。 用 [1, m] 表示各个国家,[m+1, m+n] 表示各个餐桌。 从 s 向 i 连边,容量为第 i 个国家的代表数; 从 m+i 向 t 连边,容量为第 i 张餐桌的容量; 从 i 向 j + m 连边,容量为 1 ,这样就限制了每个国家在一个餐桌上至多有一个代表。
阅读全文

浙公网安备 33010602011771号