随笔分类 - 算法笔记
摘要:引入 斜率优化,是单调队列优化的一个进阶版本,为了更好地理解,先来回顾一下单调队列吧~ 所谓单调队列优化,就是对于形如: \[ dp_i=\max\{dp_j+a_j\} \] 的 \(dp\) 式,我们把所有的 \(dp_j+a_j\) 放进单调队列里,实现 \(O(1)\) 的转移。 这个时候,
阅读全文
摘要:简介 二分图是一种特殊的图。其定义为: 节点由两个集合组成,且两个集合内部没有边的图。 那啥时候可以用二分图呢?当且仅当图可以进行合法的黑白染色的时候,可以考虑二分图。 二分图匹配 匈牙利算法 最基础的问题就是二分图的最大匹配。所谓最大匹配,就是对于左右两个集合内的点,每个点都只能选一次,并且左右匹
阅读全文
摘要:简介 高斯消元是一个用于求方程组的解的算法。在线性代数中非常重要。一般而言,其复杂度为$O(n^3)$,可以承受$200$及以下的数据范围(当然有的题目时限是$10000ms$什么的,特殊情况特殊对待)。 算法理解 考虑一个二元一次方程组怎么解。 \(\begin{cases}a_1x_1+a_2x
阅读全文
摘要:引入 大家都知道 \(Kruskal\) 求最小生成树吧,这个算法就是建立在前面说的算法的基础上的一个奇妙的想法。 有这么一个问题,给你一张图,每条边都有权值,然后规定一堆东西后问:满足条件的路径中,所经过边权最大值最小是多少。 初步想法 二分,一定是最先想到的,我们接下来就以标题中的那题为例讲讲这
阅读全文
摘要:模板题引入 先来看一道模板题,CF 上的。 这题的意思是给定一棵有 \(n\) 个节点的树,树上有一些关键点(\(key\))。接下来有 \(q\) 组询问,每次给出 \(k_i\) 个 \(key\),要求删去一些点,使得这些 \(key\) 不相连。要求删去的最少的点数。 模板题解析 第一眼看到
阅读全文