文章分类 - 算法
发表于 2023-01-16 10:05阅读:187评论:0推荐:0
摘要:Hall 定理 引入 有 个男生,每个男生都有若干个喜欢的女生。 现在要求每个男生都与其中一个自己喜欢的女生牵手,且每个女生只能和一个男生牵手。 问是否存在一个方案。 定理: 当我们选择任意 个男生,他们喜欢共有 个不同的女生,那么就存在一
阅读全文 »
发表于 2022-11-22 19:33阅读:53评论:0推荐:0
摘要:没想到都临近最后一次 NOIP 了,还要被迫学新东西... 不过还好这个知识很好理解。 构造 Prufer 序列: 对于一棵有标号无根树,如果要用一个序列来表示它,那么 Prufer 序列就是其中的一种。 对于一个结点数为 的树,它的 Prefer 序列的长度为 。 构造方式为:每
阅读全文 »
发表于 2022-11-01 14:48阅读:34评论:0推荐:0
摘要:做一个简单的总结。 定义 常用于计数容斥中,解决的是“钦定”和“恰好”的问题。 我们定义 是钦定有 个满足条件的方案数, 是恰好有 个满足条件的方案数。 常见的有四种形式: $$f_n = \sum_{i=0}^n(-1)^i\begin{pmatrix}n\i
阅读全文 »
发表于 2022-10-27 15:31阅读:29评论:0推荐:0
摘要:终于来填坑嘞 ① 点分治 ~~(俗称淀粉质)~~ 通常用来解决树上路径问题 我们每次钦定一个点,并只统计经过这个点的路径;处理完后我们向其子树分治下去 每次选择的点都很关键,比如一条链,如果你一直选择它的端点,那我们的时间复杂度可能还是 最优的决策点应该是树的重心,这样树的高度就保
阅读全文 »
发表于 2022-10-25 09:50阅读:25评论:0推荐:0
发表于 2022-10-10 10:02阅读:60评论:0推荐:0
摘要:学习 广义SAM 之前,请保证对 字典树、SAM 有一定了解 基础知识 伪广义后缀自动机 之所以是“伪”,因为它的时间复杂度并无法保证(虽然大部分情况下依旧是线性的,也够用),而且部分信息可能无法维护 常见的有以下两种: 将多个字符串直接连接,相邻两个字符串用特殊符号分隔 每将一个字符串全部加入到
阅读全文 »
发表于 2022-10-09 10:46阅读:30评论:0推荐:0
摘要:基础模型 初学 SAM,感觉这东西实在是抽象... 建议就是感性理解 + 背板子 参考资料: OI-Wiki cmd 的博客 首先我们来了解什么是 : ,顾名思义就是“结尾位置” 而 $\text{endp
阅读全文 »
发表于 2022-09-28 09:31阅读:114评论:0推荐:1
摘要:K-D Tree (K - Dimension Tree),是一种用来解决 维空间信息的数据结构;一般在 OI 竞赛中,以 为多 K-D Tree 实际上是一个二叉搜索树;而为了让复杂度尽量优(注意,K-D Tree 在某些问题可以被卡成暴力的复杂度),我们会让树高尽可能的小,因
阅读全文 »
发表于 2022-09-22 09:48阅读:18评论:0推荐:0
摘要:引入: 差分约束是来解决以下这一类问题: 给出多个 的限制,求一组 的合法方案 那么我们就可以从 向 连出一条边长为 的有向边 跑一次最短路,就能得到最小的合法方案 如果出现负环,则是无解 代码 进阶: 题意: 个
阅读全文 »
发表于 2022-09-18 22:00阅读:41评论:0推荐:0
摘要:~~之前一直觉得这个算法没啥实际用处,现在才知道是我错了~~ 推荐一下这位大佬的博客,让我很好理解了 WQS 二分 这类二分通常用来解决这类问题: 个数,要求恰好选 个,问最大/小和 而这类二分也有一些比较严苛的条件要求: 令 为恰好选 个数的最优方案,那么必须有
阅读全文 »
发表于 2022-09-16 10:10阅读:31评论:0推荐:0
摘要:因为上年 CSP-S 考了,但我并不会建树,于是今年初赛前来学学(虽然出的概率是微乎其微的了) 笛卡尔树满足两个条件: 它是一棵二叉搜索树 它是一个小根堆 若树上每个结点都有一个键值二元组 ,那么关于 满足二叉搜索树的性质;关于 满足小根堆的性质 现在考虑建树过程: 我
阅读全文 »
发表于 2022-09-14 11:08阅读:90评论:0推荐:0
摘要:这个算法是用来解决:求图上两点的路径,最大/小的边的相关信息 例题引入: 传送门 在之前学习 MST 中,我们了解到,当用 kruskal 生成一棵 MST,它同时满足为瓶颈生成树(即使最小化最大边) 因此我们可以在 MST 找出询问点 的路径,求最大边 但这个似乎不太优秀(?那就用
阅读全文 »
发表于 2022-09-13 10:30阅读:36评论:0推荐:0
摘要:学习笔记 LCT,是一个强大的数据结构,通常用来维护动态森林的一些操作 我们将原树剖分成多条实链,满足每个实链内的点在原树的深度是严格递增的,每个实链用一个 splay 来维护 每个结点到其子结点最多只有一条是实边,其余的都是虚边,保证每个结点只在一个 splay 中 每个 splay 的根节点指向
阅读全文 »
发表于 2022-09-12 21:21阅读:94评论:0推荐:0
摘要:LCT 的前置知识: splay 是一种二叉搜索树,满足中序遍历是原序列,支持区间插入、删除、查询等操作 基本操作:旋转 进阶操作:双旋 顺链:先父亲再自己 折链:先自己再父亲 可证明双旋复杂度是均摊 的 初始化:先建一个 -INF 和一个 INF 结点 查找 的
阅读全文 »
发表于 2022-08-17 21:09阅读:19评论:0推荐:0
摘要:万物皆可分治 例题引入: 动态加边、删边,询问两点联通状态(不要求在线,) 询问联通状态,我们可以自然想到用并查集来维护 但问题就在于,并查集不能删边 比如我们加入边 ,再删除 ,问你 的联通性;由于并查集对加入 并
阅读全文 »
发表于 2022-08-12 14:58阅读:47评论:0推荐:0
发表于 2022-08-11 09:56阅读:58评论:0推荐:0
摘要:入门 1. 基本要素 定义“外结点”表示左儿子或右儿子为空的结点 定义 表示结点 到最近的一个“外结点”的距离 2. 基本性质及结论 左偏树本质为小根堆,满足一个结点的权值大于等于其左右儿子的权值 左偏树满足左偏的性质,即对于任意一个结点 ,满足 $dis_{l_u}\
阅读全文 »
发表于 2022-06-02 15:12阅读:147评论:0推荐:0
摘要:0. 引入 快速沃尔什变换(FWT) 是用来解决位运算卷积的算法,形如: 其中, 代表位运算中的某一种 1. 转化 回顾 FFT/NTT,加法卷积是将表达式转化成点值,相乘后再转化回来 那我们考虑构造
阅读全文 »
发表于 2022-04-26 15:50阅读:75评论:0推荐:0
摘要:拆系数FFT 在之前,我们用 原根 代替 单位根,实现了比 FFT 更快的 NTT 但 NTT 的限制比较大:模数能表示为 ,通常这个 要求大于 如果我们换了一个不太友好的模数(如 , 19190817),似乎 NTT
阅读全文 »
发表于 2022-04-25 21:47阅读:42评论:0推荐:0