peiwenjun's blog 没有知识的荒原

随笔分类 -  OI & ACM / 学习笔记

K-D Tree 学习笔记
摘要:一、简介 此处强烈推荐 oi-wiki 。 \(\texttt{K-D Tree}\) ,全称 \(\texttt{K-Dimension Tree}\) ,是维护 \(k\) 维空间信息的数据结构。 二、静态建树 操作步骤:每次选择一个维度,取该维度的中位数作为根节点,左右递归建树。 两种常见切割 阅读全文

posted @ 2026-02-15 11:13 peiwenjun 阅读(7) 评论(0) 推荐(0)

最小斯坦纳树学习笔记
摘要:例1、\(\texttt{P6192 【模板】最小斯坦纳树}\) 题目描述 给定一张 \(n\) 个点, \(m\) 条边的带权无向连通图,和 \(k\) 个关键点构成的集合 \(S=\{u_1,\cdots,u_k\}\) ,求让这些点连通所需边权和的最小值。 显然最优解是一棵树(否则任意去掉环上 阅读全文

posted @ 2026-01-21 10:59 peiwenjun 阅读(6) 评论(0) 推荐(0)

多项式全家桶学习笔记
摘要:一、数组版本 数组版本和 poly 版本都只涵盖目录中第 \(4\sim 10\) 部分。 namespace Poly { int p[maxn],q[maxn],r[maxn],w[maxn]; int inum[maxn]; int qpow(int a,int k) { int res=1; 阅读全文

posted @ 2025-09-01 17:01 peiwenjun 阅读(29) 评论(0) 推荐(0)

洲阁筛学习笔记
摘要:一、概述 在学习洲阁筛之前,请确保你对 \(\min25\) 筛有充分了解。 洲阁筛和 \(\min25\) 筛类似,都是对埃氏筛的优化。 不同之处在于,洲阁筛是块筛(对所有形如 \(\lfloor\frac ni\rfloor\) 的位置求前缀和),而 \(\min25\) 筛通常只求单点。 洲阁 阅读全文

posted @ 2025-02-16 22:27 peiwenjun 阅读(109) 评论(0) 推荐(0)

点分树学习笔记
摘要:一、点分树概述 参考资料:https://www.cnblogs.com/Xing-Ling/p/12976848.html。 上文提到,点分治可以处理大规模树上路径问题。但是如果权值带修,点分治就无能为力了。 点分树,又称动态点分治,一般用于解决带修的树上路径相关问题。 温馨提示: 权值可以带修, 阅读全文

posted @ 2025-02-12 17:10 peiwenjun 阅读(162) 评论(0) 推荐(0)

完全图 MST 小记
摘要:一、概述 完全图 \(\texttt{MST}\) (Minimum Spanning Tree,最小生成树)相关题目一般具有以下特征:一张 \(n\) 个点的完全图,第 \(i\) 个点和第 \(j\) 个点之间的边权与这两个点的信息有关。 常见解法有两种: 通过题目性质证明大量的边一定不会出现在 阅读全文

posted @ 2025-01-27 22:54 peiwenjun 阅读(366) 评论(1) 推荐(1)

xor-hash 学习笔记
摘要:一、 xor-hash 功能 这里可以把 sum-hash 和 xor-hash 放在一起对比: sum-hash 可以快速判断两个集合对应元素出现次数是否相等。 xor-hash 可以快速判断两个集合对应元素出现次数奇偶性是否相等。 操作流程:给每个元素赋随机权值 \(key\) ,一个集合的 h 阅读全文

posted @ 2024-11-20 19:06 peiwenjun 阅读(299) 评论(0) 推荐(2)

zkw 线段树学习笔记
摘要:一、简介 zkw 线段树专门用于线段树卡常,同时码量比普通线段树要小。 原理是通过将线段树补成完全二叉树,直接找到第 \(i\) 个叶子节点(编号为 \(p+i\) ),然后从下往上更新,从而避免递归。 这里常数 p=1<<(__lg(n)+1) ,编号为 \(p\) 和 \(p+n+1\) 的叶子 阅读全文

posted @ 2024-10-22 15:39 peiwenjun 阅读(189) 评论(0) 推荐(0)

2-SAT 学习笔记
摘要:一、简介 k-SAT (satisfiability) 解决这样一类问题:给定 \(n\) 个布尔变量和 \(m\) 条限制,每条限制形如 \(x_1=0/1\or\cdots\or x_n=0/1\) ,求是否有解并给出构造。 当 \(k\gt 2\) 时,该问题为 NP 完全问题。 二、算法流程 阅读全文

posted @ 2024-09-03 19:48 peiwenjun 阅读(105) 评论(0) 推荐(0)

仙人掌&圆方树学习笔记
摘要:一、连通分量与 \(\texttt{tarjan}\) 算法 有向图的强连通分量 定义 强连通图:如果有向图中任意两点\(u,v\)互相可达,那么这张图被称为强连通图。 强连通分量:有向图的极大强连通子图被称为强连通分量。 将图中所有强连通分量缩成一个点,得到的图一定是有向无环图( \(\textt 阅读全文

posted @ 2023-06-16 21:51 peiwenjun 阅读(56) 评论(0) 推荐(0)

WQS 二分学习笔记
摘要:一、算法介绍 \(\texttt{WQS}\) 二分又称带权二分、凸优化,因王钦石神仙最先提出而得名。 \(\texttt{WQS}\) 二分能够解决的问题类型: 有若干个物品可供选择,某些特殊物品限制恰好选 \(m\) 个,求最优方案。 前提条件: 记 \(f_i\) 为限制恰好选 \(i\) 个 阅读全文

posted @ 2023-05-04 23:14 peiwenjun 阅读(55) 评论(0) 推荐(0)

左偏树学习笔记
摘要:参考资料。 一、左偏树简介 基本性质 左偏树可以在严格 \(\mathcal O(\log n)\) 的时间内合并两个堆,其他操作和普通的堆没有差别。 这也是左偏树的别名——可并堆的由来。 和普通的二叉堆类似,左偏树是一棵二叉树,每个节点需要维护 dis 和 val 两个值。 其中 val 不必多说 阅读全文

posted @ 2023-04-11 11:37 peiwenjun 阅读(36) 评论(0) 推荐(0)

长链剖分学习笔记
摘要:一、长链剖分概述 温馨提示:在阅读本文之前,请确保你会重链剖分。 我们知道,每次选一个 sz 最大的子节点作为重儿子,就是重链剖分。 换一种决策重儿子的方式,每次选一个 mxd (走到叶节点经过点数)最大的点作为重儿子,就是长链剖分。 void dfs1(int u,int _f) { mxd[u] 阅读全文

posted @ 2023-03-15 16:59 peiwenjun 阅读(32) 评论(0) 推荐(0)

决策单调性学习笔记
摘要:一、四边形不等式 定义 如果二元函数 \(w\) 满足,\(\forall a\le b\le c\le d\) ,均有 \(w(a,d)+w(b,c)\ge w(a,c)+w(b,d)\) ,则称 \(w\) 满足四边形不等式。 结论:二元函数 \(w\) 满足四边形不等式的充要条件为, \(\f 阅读全文

posted @ 2023-02-18 18:53 peiwenjun 阅读(50) 评论(0) 推荐(0)

min25筛学习笔记
摘要:\(\min25\) 筛可以在亚线性时间内求积性函数 \(f\) 的前缀和。 一、素数部分 一些约定: \(p_i\) 表示从小到大第 \(i\) 个素数。 \(\text{minp}(i)\) 表示 \(i\) 的最小素因子。 \(v_p(i)\) 表示 \(i\) 含素数 \(p\) 的幂次。 阅读全文

posted @ 2023-02-10 15:12 peiwenjun 阅读(81) 评论(0) 推荐(0)

动态 dp 学习笔记
摘要:一、矩阵乘法 普通矩阵乘法 相信大家对矩阵乘法都不陌生,普通的矩阵乘法定义如下: 对于 \(n\times m\) 的矩阵 \(A\) 和 \(m\times q\) 的矩阵 \(B\) ,定义 \(C=A\cdot B\) ,其中: \[c_{i,j}=\sum_{k=1}^ma_{i,k}\cd 阅读全文

posted @ 2023-01-28 17:01 peiwenjun 阅读(34) 评论(0) 推荐(1)

点分治学习笔记
摘要:一、点分治概述 参考资料:https://www.cnblogs.com/bztMinamoto/p/9489473.html。 点分治的题常见重要特征:需要处理大规模树上路径问题。 点分治的核心思想:每次选一个点,处理经过它的所有路径,然后删掉它,分成若干棵子树,继续分治。 为了保证时间复杂度,选 阅读全文

posted @ 2023-01-10 11:47 peiwenjun 阅读(47) 评论(0) 推荐(0)

导航