随笔分类 - 学习笔记
摘要: 可持久化线段树 概述 又称主席树。当我们想要保存线段树上的一些历史版本信息时,直接给每一个版本都开一个线段树显然是吃不消的,考虑优化。以版本之间单点修改为例,容易发现插入一个点最多会有 个节点受影响,于是我们可以对这 \(\log
阅读全文
摘要: K-D Tree 是处理 维空间的数据结构。具有二叉搜索树的形态。事实上 OI 中的应用就是 2-D Tree,常用来维护二维平面上一些点对的信息。 构建 要让 K-D Tree 尽量贴近一个二叉搜索树的形态,那就要让某一维度上的中位数作
阅读全文
摘要: 线段树是一种常见的数据结构,除了基础用法,我们还需要掌握一些进阶。 线段树的合并与分裂 概念 线段树的合并通常是针对权值线段树的合并,将两棵线段树的信息合并起来保存在一棵线段树中。为了节省空间,我们通常将两棵线段树的信息直接保留在一棵线段树中。需要留意的是,
阅读全文
摘要: 插值是一种通过已知的、离散的数据点推算一定范围内的新数据点的方法。插值法常用于函数拟合中。我们知道一个 次多项式可以由 个点唯一确定,由此我们可以得到拉格朗日插值算法。 思路 我们现在给定 个点坐标为 ,
阅读全文
摘要: 前言 注意到我并没有将 "莫比乌斯反演" 作为文章的题目,主要原因是莫比乌斯反演可以解决的题目用莫比乌斯函数通常便可以解决。莫比乌斯函数的前置知识有且仅有数论分块。 数论分块 引理 1 \[\forall a,b,c\in\mathbb{Z},\left\
阅读全文
摘要: 一、定义 字符串 的 SAM 是一个接受 的所有后缀的最小 DFA (确定性有限自动机或确定性有限状态自动机),也就是说: SAM 是一张有向无环图。它的结点是图中的状态,边是状态之间的转移。 SAM 有源点 \(t_0
阅读全文
摘要: 这部分期望题目较为简单基础,是期望的练手题,思维难度较小。 T1 基础期望 。依照定义:期望 概率 贡献做即可。 本题提醒我们:在正向转移发现无法解决,且这些选择都具有多个,难以枚举,因而概率相同时,要考虑逆向
阅读全文
摘要:开篇一句话—— 数论是毒瘤 本博客内容基本按照李煜东神犇的《算法竞赛进阶指南》编排。 一、质数与约数 1. 定义:略。 2. 判定: (1) 单个质数的判定——试除法 时间复杂度: 原理:不解释。 代码: #include<math.h> bool is_prime(int
阅读全文
摘要:单调数据结构是一种在我看来很神奇的数据结构,其中包括单调栈和单调队列,但其实它们的思想几乎是完全一致的,可以说单调队列就是单调栈的升级版本。 我们知道单调队列是可以由两端出队的,也就是双端队列 std::deque ;而单调栈就是普通的栈,但是 std::stack 的底层就是由 std::dequ
阅读全文
摘要:〇、说在前面 近日应教练要求,刷了很多各方面的题目,但感觉刷地不精,需要好好总结总结。本篇博客将从各个方面理顺每一道dp题目,以此巩固基础,提升我的dp能力。 一、背包动态规划 1. 0/1背包 题目描述 有一个背包和一些有对应价值,重量的物品,每个物品只能选一次,求不超过背包重量的前提下物品价值的
阅读全文