- 博客(73)
- 收藏
- 关注

原创 费用流学习笔记
前面我们已经讲过了最大流和最小割,现在我们来讲费用流。这个时候一条边不止有一个容量,还有一个费用。这个费用表示的是我们要求的问题是这样的:给定一个预算,每一条边通过一个单位流量都有一个费用,也有一个通过流量上界,求在最大流前提下,总费用的最小值或者是最大值。假设有这个图:将橙色的字表示为容量,黄色字表示费用。如果这个时候我们不考虑费用流,只考虑最大流,很容易发现这个图的最大流为4。这个时候我们有两种路径可以走,很显然下面更加便宜一点。(因为性价比比较高)如果下面走了3的流量,费用就是3。
2025-06-11 10:12:23
287

原创 P4311 士兵占领 题解 - 上下界网络流
使用源点来向各个行来发送士兵,使用汇点从各个列来聚集士兵。因为在任何时候 所有行的士兵数的和 等于所有列的士兵数的和。从源点到行的容量很显然是这样子的:下界是输入给定的至少要放的士兵数,上界是这一行除了那些不能放士兵的格子以外还能放多少。从列到汇点的容量是这样子的:下界是输入给定的至少要放的士兵数,上界是这一列除了那些不能放士兵的格子以外还能放多少。看到这种最小方案分配的问题,先考虑动态规划或者是贪心,发现不可以解决。(如果这个 trick 不会也没有关系,以后就要会了)的容量是这样子的:下界为。
2025-06-11 10:11:50
280

原创 浅谈上下界网络流
这个时候,不止有流量的上界,还有了流量的下界。所以这个东西理所应当难一些些。我们采用这样的一种方式:先找出可行流,然后再考虑找出这些可行流里面权值最大的。
2025-06-10 09:08:25
315

原创 图论学习笔记 4 - 仙人掌图
先扔张图:为了提前了解我们采用的方法,请先阅读《图论学习笔记 3》。仙人掌图的定义:一个连通图,这个图就是仙人掌图。这个图也是仙人掌图。而这个图就不是仙人掌图了。很容易发现,仙人掌图就是在树上连了若干条边(≥1条)。所以可以视为众所周知,我们通过想象基环树的深搜树形态解决了基环树的一些问题,所以也考虑想象仙人掌图的深搜树。这里就直接给图了:很容易发现以下性质:仙人掌图中,每一条回边互不相交且与环一一对应,环由回边与祖先到子孙的链构成。(这个比较显然,可以简单理解)任何一个环的up。
2025-05-27 08:03:10
901

原创 图论学习笔记 3
首先需要了解一些定义。基环树:直白来讲就是一棵树,然后把其中某两个没有边的点连边,得到了基环树。而基环树又分有向和无向。**无向基环树:**就是nnn点nnn边的连通图。至于为什么nnn点nnn边的连通图就一定有一个环,而且去掉一条边之后会变成一棵树,可以感性理解。首先这个有向图是弱连通的,而且恰好有一个有向环。如果其他点都可以到环,则称为内向基环树。如果其他点都可以被环到,则称为外向基环树。否则就不是有向基环树。内向基环树:每一个点出度恰好为111,且图弱连通。
2025-05-20 14:26:19
1365

原创 树上背包学习笔记
树上背包,顾名思义,就是在树上跑背包。Q:那么到底为什么要树上跑呢?A:因为我们到现在学的背包 dp 还是属于较浅的一类,什么 01 背包、完全背包还是多重背包,不如先看一个引入题。
2025-05-06 17:36:07
1338

原创 树的序列化 - 学习笔记
树的序列化可以有很多种类:可以变成 dfs 序,可以变成欧拉序,还有什么括号序的科技。但是除了第一个以外其他的都没什么用(要么也可以被已有的算法给替代掉)。所以表面上是讲树的序列化,实际上还是讲的 dfs 序的运用(dfs 序的基础知识没什么,但是其运用可以变得相当毒瘤)。
2025-04-30 16:41:40
1020

原创 Atcoder Beginner Contest 403 A to E、G 题解
前情提要:AC ABCDEG,首次拿下金名表现分。如果 F 能及时调出来那就更好了。F 会单开一篇文章,如果你下面的思路没有看懂,看代码也没有关系。
2025-04-28 08:45:35
1153

原创 启发式合并学习笔记
字数:10292.以“启发式”来命名的算法有很多,有进阶搜索——启发式搜索,还有一个东西叫做,还有一个是,这两个东西这篇文章都会讲。引用一句 OIwiki 上面的话:启发式算法是基于人类的经验和直观感觉,对一些算法的优化。简称人类智慧乱搞。
2025-04-23 11:32:56
1396

原创 线性基学习笔记
线性基有着一个奇怪的名字,异或线性基也有着奇怪的定义。那么异或线性基是啥东西呢?直接搬定义:线性基是一个数的集合(这就不只是异或线性基了!),并且每一个序列都至少拥有一个线性基。取异或线性基中若干个数异或起来可以得到原序列中的任何一个数。这个条件不是什么时候都可以满足,于是我们在之后会详细讲异或线性基的构造方案,以满足这个定义和后面的三大性质。
2025-04-22 10:23:02
749

原创 SG 理论学习笔记
SG 理论是博弈论中的另一个知识点,SG 理论也有地方说是 SG 函数,不过都是一个东西。书接上回,这一篇我们继续探讨 ICG 游戏,所以请先阅读 博弈游戏学习笔记。SG 函数用来解决一些很复杂的 ICG 游戏问题。例如,有一个 ICG 游戏:Alice 和 Bob 正在一场组合游戏,这个游戏由7个 DAG 博弈、3个 Bash 博弈、7个威佐夫博弈、4个斐波那契博弈……组成。这是什么啊???你给我单个博弈游戏还可以,但是这堆东西组合起来是什么东西??
2025-04-17 10:33:18
1002

原创 简单博弈论学习笔记
博弈游戏,也有很多人把它叫做博弈论,但是博弈论的英文确实和 Game 这个词有关,所以也可以说是博弈游戏可以看作是一个(例如 数论、图论、或者是概率论),它的板块非常非常大。所以这篇文章所写的可能只是很小的一部分,这里先开一个坑,我以后再来填写。如果我没有听错的话,博弈游戏的全部介绍的书,好像有 800 多页。所以我们这些人学的都是冰山一角。
2025-04-15 11:53:15
1104

原创 圆方树学习笔记
首先,圆方树和差不多,,然后在上面跑各种乱七八糟的算法:LCA、DP、甚至树链剖分……但是,圆方树和 Kruskal 重构树所基于的东西不同:Kruskal 重构树是基于的,而圆方树是基于的不会 Kruskal 重构树?不用担心,你以后会学到,这里也不会讲 Kruskal 重构树。不会点双连通分量?不用担心,你可以见我的其他文章,但是你确实一定得会。圆方树,顾名思义,包含两种点,一个是圆点,另一个是方点。圆点代表原图中的点,方点代表原图中的点双连通分量。
2025-04-04 11:17:08
926

原创 二分图学习笔记
使用题单:二分图 - 从入门到入土。对于一个图,如果能够把它的点集恰好分成两个部分,使得这第一个部分里面的点两两不连边,第二个部分里面的点也两两不连边,则该图是二分图。或者说每一条边都横跨了两个集合。举个例子:这个图是二分图,因为我们可以将它分成 {1,3,5,7}\{1,3,5,7\}{1,3,5,7} 和 {2,4,6}\{2,4,6\}{2,4,6} 两个点集:但是这个图:可以发现这个图无论如何也无法划分点集,所以这个图不是二分图。还是给一下不说人话的形式化定义:注意,二分图可以不是连通图。很容易想到
2025-04-02 08:34:06
1079

原创 差分约束学习笔记
如果一个有n个变量x1x2,⋅⋅⋅,xn和m个约束条件(也是不等式)和**m个常量w1w2,⋅⋅⋅,wmxi−xj≤wk1≤ij≤n1≤k≤m差分约束系统。**这个名字的由来是这样的:“差分”代表的是每一个约束条件里面都是做差的形式,“约束”代表的是每一个差都有一个最大值上界作为约束,“系统”字面意思。有如下几个问题:1.有没有解2.求一组解3.一组变量(a−b)的极值。
2025-04-02 08:33:26
471

原创 口胡的,一些结论的证明
而在叶子节点之间加边顺便还包含了父亲节点,一旦加了边,就会添加一个环,那么这个环上的边,都不可能成为桥了,因此考虑在叶节点之间加边即可。但是,点双连通分量指的是极大联通分量,所以这几个合起来的分量才是真正的点双连通分量。但是,点双连通分量指的是极大联通分量,所以这几个合起来的分量才是真正的点双连通分量。那么这几个分量合起来也应该合法,因为去掉一个点,而且这几个都是合法的,那么去掉之后一定联通。那么这几个分量合起来也应该合法,因为去掉一个点,而且这几个都是合法的,那么去掉之后一定联通。
2025-03-22 21:15:34
1023

原创 解交互题时如何规划交互流程
在竞赛中,交互题通常会有特定的交互协议,以下以一个简单的询问式交互题为例,题目要求在一个 1 - n 的整数序列中找出目标数字。评测系统会根据你的询问返回信息。通过以上不同场景的示例,你可以看到规划交互流程的关键在于明确每个阶段的任务、输入输出内容以及状态的转换,这样才能有条不紊地解决交互题。以一个简单的猜数字游戏为例,目标是让用户猜出一个 1 - 100 之间的随机数,程序需要根据用户的猜测给出提示。以一个点菜系统为例,用户可以多次点菜、修改订单、结算。
2025-03-04 08:06:32
564

原创 C++交互题是什么?如何去解交互题?
C++ 交互题是一类在程序运行过程中,需要与用户或评测系统进行数据交互的题目。与普通编程题不同,交互题不是一次性读取所有输入并输出结果,而是在运行时动态地接收输入、给出输出,就像人和人对话一样有来有往。比如常见的场景有用户输入数据,程序根据输入进行计算并返回结果;或是程序向评测系统询问某些信息,再根据反馈继续执行。
2025-03-04 07:45:06
736

原创 信息学竞赛练习方法:从 Codeforces 评级 1000 到 2000
(另外,抱歉我的英语水平有限。AtCoder 有 ABC(AtCoder 初学者竞赛)、ARC(AtCoder 常规竞赛)和 AGC(AtCoder 重大竞赛),但在这篇博客中,我只介绍 ABC 和 ARC。ABC 的题目分别是 ABC - A、ABC - B、ABC - C、ABC - D,ARC 的题目分别是 ARC - C、ARC - D、ARC - E、ARC - F。在每场竞赛中,ABC - C 和 ARC - C 是同一难度的题目,ABC - D 和 ARC - D 也是同一难度的题目。
2025-02-21 15:48:04
1016

原创 三分算法学习笔记
二分算法,顾名思义,就是每一次将区间分成 2 个一样的区间。三分算法,同样顾名思义,就是每一次将区间分成 3 个一样的区间。三分算法主要用来求解一些关于单调函数的问题。 而且考试中有一定的几率考到。二分算法主要用来求一些简单的最值问题,例如在一些一次函数上。三分算法主要用来求一些凹函数和凸函数的最值问题,典型地,在一些二次函数上,甚至是高次函数。凸函数的定义:学术描述:对此函数进行二次求导,最后的值恒 <0<0<0。人话描述:先上升后下降的函数。凹函数的定义就是先下降后上升的函数。当然,函数的形状各种各样,
2025-02-15 10:03:18
600
原创 P1345 [USACO5.4] 奶牛的电信Telecowmunication
注意是删点而不是删边,所以不能直接使用最小割来求。所以考虑变换一下题目模型。题意就是给定一个无向图,问你要删多少点才能使。突然发现 USACO 好喜欢玩谐音梗。这样就发现可以使用最小割处理了!直接把板子粘过来即可。
2025-06-06 15:10:48
563
原创 题解:P2607 [ZJOI2008] 骑士
因为一个骑士和他痛恨的骑士无论如何都不会一起被选上了,所以即使设前者也被后者痛恨也是没有影响的。很容易发现这道题的弱化版是 P1352 没有上司的舞会,大家可以先去做一下,这对独立思考此题至关重要。原本打算做出来之后在洛谷上面交的,然后一看已经满了,所以就在别的地方发表吧。这个状态的表示已经足够全面:因为基环树的独立集只比树上的独立集多了一个东西。显然基环树之间是独立的,所以考虑在一棵基环树上面跑最大独立集。给定一个无向基环树森林,点带点权,求其独立集的权值最大值。的 dp 值的时候,还需要考虑。
2025-05-21 09:16:07
975
原创 ABC402题解
→1372,菜死了。G 太过毒瘤所以就这篇文章不写了,到时候单独开一个坑来写 G 题的题解。5。F 因为觉得挺好,所以也要单开一个文章。
2025-04-20 08:57:34
1288
1
原创 C++深搜与广搜详细总结
在 C++ 中,深度优先搜索(DFS)和广度优先搜索(BFS)是两种重要的图和树的遍历算法,下面为你详细总结这两种算法。
2025-04-17 07:44:42
446
原创 C++复杂度计算总结
定义:衡量算法运行所需时间与输入规模之间的关系,通常用大 O 符号表示,如 O(n)、O(n^2 ) 等。这里的存储空间不包括输入数据本身占用的空间,而是算法在运行时临时创建的变量、数组等占用的空间。但分析相对复杂,常需对输入分布做假设。最坏情况:考虑输入数据使算法执行时间或空间占用最长 / 最大的情形,能为算法性能提供一个上限保证。最好情况:输入数据使算法执行时间或空间占用最短 / 最小的情况,可给出算法性能的下限参考。确定额外空间:找出算法运行时创建的除输入数据外的所有变量、数组等占用空间的情况。
2025-04-17 06:55:43
568
原创 P6378 [PA 2010] Riddle 题解
如果你采用的是链式前向星,也要注意空间(还要开 6 倍)。这个时候不能删边也不能删点,考虑类似一开始 2-SAT 的方式加点。因为只有一个部分中的点连边花销较大,边的数量实际上还是。然后再对于上面的点,每一条出边的起点再设为它的虚点。然后再对于下面的点,每一条入边的终点再设为它的虚点。所以考虑优化一下同一个部分中的点的连边。对于下面的点,每一个自己的虚点连向自己。对于上面的点,每一个点连向自己的虚点。经过尝试发现这样是合法的,也是可以的。有一个端点是关键点。每个部分包含一些点。这样是我们最开始的连边方式。
2025-04-08 15:52:42
790
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人