随笔分类 -  算法学习

摘要:点分治 概念 点分治是一种针对可带权树上简单路径统计的算法, 适合处理大规模的树上路径信息问题. 注意: 对于树上路径, 我们不要求这棵树有根, 即我们只需要对于无根树进行统计. 例题引入 【模板】点分治 1 我们先任意选择一个结点作为根节点 \(rt\), 所有完全位于其子树中的路径可以分为两种: 阅读全文
posted @ 2025-02-17 21:07 Steven1013 阅读(7) 评论(0) 推荐(0) 编辑
摘要:圆方树 前置知识: 点双 引入 通常来说, 树具有十分优良的性质, 可以通过许多数据结构来维护它. 但是对于一般的图则不具备一些性质, 所以我们考虑将一般图放在树上进行考虑. 如标题所见, 圆方树便是一种将图转化成树的方法. 定义 圆方树最初是用于处理「仙人掌图」(即每一条边在不超过一个简单环) 的 阅读全文
posted @ 2025-01-30 10:32 Steven1013 阅读(5) 评论(0) 推荐(0) 编辑
摘要:左偏树 概念 左偏树是一种常用可并堆, 可以在 \(\mathcal{O}(\log n)\) 的时间内合并两个堆. 可并堆顾名思义, 是指除了堆的普通操作, 还支持合并的堆. 有如配对堆, 二项堆, 斐波那契堆等等. 相关定义 外节点: 子节点数小于两个的节点, 即左右儿子至少有一个为空的节点. 阅读全文
posted @ 2025-01-12 21:02 Steven1013 阅读(1) 评论(0) 推荐(0) 编辑
摘要:李超线段树 引入 【模板】李超线段树 题目描述 要求在平面直角坐标系下维护两个操作: 在平面上加入一条线段. 记第 \(i\) 条被插入的线段的标号为 \(i\). 给定一个数 \(k\), 询问与直线 \(x = k\) 相交的线段中, 交点纵坐标最大的线段的编号. 强制在线. 我们发现, 传统线 阅读全文
posted @ 2025-01-09 20:12 Steven1013 阅读(2) 评论(0) 推荐(0) 编辑
摘要:斜率优化 例题引入 & 概念 [[HNOI2008] 玩具装箱]([P3195 HNOI2008] 玩具装箱 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)) 朴素 DP 令 \(f_i\) 表示枚举到第 \(i\) 个物品, 分成若干段的最小代价. 设 \(\textrm{sum 阅读全文
posted @ 2025-01-08 12:48 Steven1013 阅读(3) 评论(0) 推荐(0) 编辑
摘要:子集反演 对于两个集合的函数 \(f_S, g_S\): \[f(S) = \sum_{T \subseteq S} g(T) \iff g(S) = \sum_{T \subseteq S} (-1)^{\lvert S \rvert - \lvert T \rvert} f(T) \]\(\tt 阅读全文
posted @ 2025-01-06 20:28 Steven1013 阅读(13) 评论(0) 推荐(0) 编辑
摘要:前置知识 高维前缀和, 状压 DP. 高维前缀和 前缀和可以简单理解为「数列的前 \(n\) 项的和」, 是一种重要的预处理方式, 能大大降低查询的时间复杂度. -- OI Wiki 二维 / 多维前缀和 常见的多维前缀和的求解方式有两种: 基于容斥原理, 时间复杂度 \(\mathcal{O}(2 阅读全文
posted @ 2025-01-05 20:47 Steven1013 阅读(12) 评论(0) 推荐(0) 编辑
摘要:公式 公式 1 \[f(n) = \sum_{i = 0}^n (-1)^{n - i} \binom{n}{i} g(i) \Leftrightarrow g(n) = \sum_{i = 0}^n \binom{n}{i} f(i) \]证明: \[\because g(i) = \sum_{j 阅读全文
posted @ 2024-12-27 21:04 Steven1013 阅读(2) 评论(0) 推荐(0) 编辑
摘要:前置知识: 二叉搜索树, 堆 概念 笛卡尔树是一种二叉树, 每一个节点有 \((w, k)\) 两个属性 (在算法竞赛中, \(k\) 通常为数组下标, \(w\) 为权值), 其中 \(w\) 满足堆的性质, \(k\) 满足二叉搜索树的性质. 如果笛卡尔树的 \((k,w)\) 键值确定, 且 阅读全文
posted @ 2024-12-26 20:25 Steven1013 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目链接 算法引入 字典树 Trie 字典树, 顾名思义, 就是像字典一样的书. 平时查单词, 比如 abandon, 你会怎么查? 大概是先找到 'a' 这个字母所在的范围, 再查 'b' 的范围, 以此类推, 一个单词就被查找到了. 字典树亦是如此. 先放一张图. 可以发现, 字典树用边(点)来 阅读全文
posted @ 2024-11-21 19:33 Steven1013 阅读(4) 评论(0) 推荐(0) 编辑
摘要:参考 这一篇讲的真的非常详细! 强连通分量 引入 强连通的定义: 有向图 G 强连通指的是 G 中任意两个节点都可以互相到达. 强连通分量 (SCC) 的定义是: 极大的强连通子图. 举个栗子, 下图为一个有向图. 在这个图中, 1, 2 两点可以互相到达对方, 所以这两个点强连通. 而1, 2 和 阅读全文
posted @ 2024-11-16 08:52 Steven1013 阅读(5) 评论(0) 推荐(0) 编辑
摘要:前言 异或哈希是个很神奇的算法,利用了异或操作的特殊性和哈希降低冲突的原理,可以用于快速找到一个组合是否出现,序列中的数是否出现了 \(k\) 次. 异或(xor) 含义: 数的二进制表示按位相加并对2取余 举个例子, \(3 \oplus 5 = (011)_2 \oplus (101)_2 = 阅读全文
posted @ 2024-10-17 20:05 Steven1013 阅读(4) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
深色
回顶
展开