随笔分类 - 算法·理论
摘要:二叉搜索树学习笔记 \(\frac{11}{20}\),看来是很难完成了。 这篇笔记大概是为了Splay准备的。 二叉搜索树 只需要了解他的思想,结合图片看就很一目了然。 一种比较唐的数据结构,他可以维护以下东西: 插入/删除一个数。 查询某个数是否出现。 查询全局某个数的前驱/后继。 先考虑每个数
阅读全文
摘要:差分 (姗姗来迟的一篇学习笔记) Part 1 一维差分 P2367 语文成绩 给出一个序列,支持修改,查询最小值。 在不考虑数据结构的情况下,有一种东西,叫差分。 他可以做到 \(O(1)\) 修改,\(O(n)\) 查询。 首先假设有一个序列:\(1,6,8,5,10\) 。 他的差分数组就是:
阅读全文
摘要:并查集学习笔记 本质上还是一个复习笔记。 考虑这样一个问题: 给出 \(x,y\) ,合并 \(x,y\) 所在集合。 给出 \(x,y\),查询 \(x,y\) 是否在同一集合内。 我们把集合当成一棵树,两个点有连边就表示他们在同一个集合内。这棵树的根节点就是这个集合的 “老大”,也就是这个集合里
阅读全文
摘要:最小生成树学习笔记 代码合集 很好,这还是一篇复习笔记。 考虑这么一个问题,给出一张无向图,有 \(n\) 个点,\(m\) 条边,边有边权,要你找 \(n-1\) 条边,使得这 \(n\) 个点联通且边权和最小。 Kruskal 首先,我们先把边权进行排序,然后贪心的加边,把选的边所带的点加到一个
阅读全文
摘要:单调栈 and 单调队列学习笔记 本文均以维护单调递增的栈/队列举例。 本篇代码合集 以后在写动态规划单调队列/单调栈优化的时候,这两个东西会合并。 单调栈 本质上就是模拟。 假设要维护一个单调递增的栈,那么对于一个元素进来了,在栈顶的所有比他小的数我全部都要踢出去,不然就不满足单调性。然后把这个数
阅读全文
摘要:SCC 学习笔记 好听点的话来说,就是强连通分量。 一个有向图,里面任意两个节点之间可以相互到达,我们把它称为一个强连通分量。 Kosaraju 首先,对于一个强连通的图,显然,他的反图也是一个强连通图。(因为原先 \(A\) 可以到 \(B\),\(B\) 可以到 \(A\),反过来是一样的) 做
阅读全文
摘要:MCE 学习笔记 最小表示法。 你说的对,月考考完了,但是感觉基本炸了。/ll/ll,相对失败。 艹,写了我一个晚上。 \(\frac{3}{20}\),还差的远呢。 闲话:MCE 是 a3 叫的,不过感觉挺好听。 这个算法出题的话可能就比较板了,所以不是很热门? 不废话了。 引入定义: 循环同构,
阅读全文
摘要:2-SAT 学习笔记 P4782 【模板】2-SAT 2-SAT 问题模型:构造 bool 变量 \(x_1,x_2...x_n\),使得满足一些限制一对 \(x_1\) 和 \(x_2\) 取值的条件合法。 很显然根据 Floyd 传递闭包可以做到 \(O(n^3+m)\),但不太行。 有 \(O
阅读全文
摘要:怎么联合省选前啥都不会,但还是要尽力。 不放歌了,更加清爽一些。 定义: 一个无向图,满足他的所有点可以被划分成两个集合 V1,V2V1,V2V1,V2,相同集合内的点没有连边。这是从点的角度。 一个无向图,每一条边所对应的两个点属于不同的集合 V1,V2V1,V2V1,V2。这是从边的角度,个人感
阅读全文
摘要:状压DP学习笔记 泛黄的春联还残留在墙上 依稀可见几个字岁岁平安 在我没回去过的老家米缸 爷爷用楷书写一个满 黄金葛爬满了雕花的门窗 夕阳斜斜映在斑驳的砖墙 铺着榉木板的屋内还弥漫 姥姥当年酿的豆瓣酱 我对着黑白照片开始想象 爸和妈 当年的模样 说着一口吴侬软语的姑娘 缓缓走过外滩 消失的旧时光 一
阅读全文
摘要:这第一名到底要多强 不用问 一定有人向你挑战 到底还要过多少关 不用怕 告诉他们谁是男子汉 可不可以不要这个奖 不想问 我只想要流一点汗 我当我自己的裁判 不想说 选择对手跟要打的仗 周杰伦《三年二班》 manacher 学习笔记 放歌,以后一个学习笔记一首。以前的话,看心情补。 tmd,又要期末考
阅读全文
摘要:KMP 学习笔记 你说得对,但是还是怀着对于OI的热情来了。 好了,搞一下字符串。 考虑这样的一个问题,给出字符串 SSS 和 TTT ,在主串 SSS 中找到 子串 TTT。 先定义。 一个 字符串 SSS 是将 nnn 个字符顺次排列形成的序列,nnn 称为 SSS 的长度,表示为 ∣S∣|S|
阅读全文
摘要:费马小定理 对于一个质数 ppp,gcd(a,p)=1\gcd(a,p)=1gcd(a,p)=1,有: ap−1≡1(moda^{p-1} \equiv 1(modap−1≡1(mod p)p)p) ap≡a(mod a^p \equiv a(modap≡a(mod p)p)p) 证明: 考虑一个
阅读全文
摘要:最短路学习笔记 这是一篇复习笔记,相对写的比较简单,勿喷 qwq。 本文均考虑双向边。 本文代码合集 1. FloydFloydFloyd 利用了 dpdpdp 的思想,是最基础的最短路算法。 我们考虑 dpi,jdp_{i,j}dpi,j 表示 iii 到 jjj 的最短路径。初始化为一个无穷大
阅读全文
摘要:前言: 这理论上是一篇复习的笔记,不会讲的很细,待到补测完再来完善。 概述&定义 先用一张图表示树状数组: 我们定义 aia_iai 表示数组元素,cic_ici 表示 [ai−2x+1,ai][a_{i-2^x+1},a_i][ai−2x+1,ai] 之间数的总和,其中 xxx 表示为 i
阅读全文
摘要:本篇讲详细介绍 LCA 的各种求法。 LCA 指最近公共祖先,即两个节点之间距离最近的父节点。 如图,555 和 444 的最近公共祖先是 111。 P3379 最近公共祖先 1.倍增 时间:O(nlog(n)+qlog(n))O(n\log(n)+q\log(n))O(nlog(n)+qlog
阅读全文
摘要:ST表 ST表,这是一个好东西。可以用来查询区间最值,但是不可以进行修改。 它可以做到 O(nlog(n))O(n\log(n))O(nlog(n)) 预处理,O(1)O(1)O(1) 查询。 前置知识:倍增,dpdpdp。 ST 表的优点就在于他可以用倍增来优化预处理的时间。 以模板为例。 【模
阅读全文
摘要:背包 dpdpdp 顾名思义,就是给你一个背包,然后给你一些物品,有一定的限制条件,然后求获得的最大值。 Part1 01背包 P1048 采药 大意:给一个背包,每个物品有对应的价值,重量(本题中时间就是重量),在背包容量下(采药的时间),求最大价值。 010101 背包二维方程 dp[i][j]
阅读全文
摘要:update in 2024.4.17 算是大力整改了一下,这是两年的事情了! update in 2024.4.18 补充了长链剖分内容。 重链剖分 \(\frac{12}{20}\),差不多得了,要一模了。 学习发现它的本质,是多么有趣的一件事情啊! 树剖里面最常用的其实就是重链剖分。 其实就是
阅读全文