随笔分类 - 算法学习
日常学习的算法总结
摘要:SOS DP 学习笔记 有关子集和超集求和的问题。 题单
阅读全文
摘要:浅谈线段树 线段树进阶 Part 1 线段树相关技巧的小小总结 浅谈扫描线 线段树的扩展之浅谈zkw线段树 浅谈权值线段树 浅谈权值线段树到主席树 浅谈李超线段树的另一种实现方法 线段树分治总结 浅谈线段树分裂 线段树合并:从入门到放弃
阅读全文
摘要:快速傅里叶变换(FFT)详解 原文链接:快速傅里叶变换(FFT)详解 - 自为风月马前卒 - 博客园 (cnblogs.com) 目录 前言 多项式 系数表示法 点值表示法 复数 向量 圆的弧度制 平行四边形定则 复数 运算法则 单位根 单位根的性质 快速傅里叶变换 快速傅里叶逆变换 理论总结 递归
阅读全文
摘要:后缀自动机的一些题目的整理 P3804 【模板】后缀自动机(SAM) P3804 【模板】后缀自动机(SAM) 板子题,没啥好说的。 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e6
阅读全文
摘要:AC自动机 前置芝士 kmp trie 介绍 学算法首先肯定要清楚这个算法是用来解决啥东西的。 AC 自动机是用线性的复杂度来解决多模匹配的算法。 额(⊙o⊙),说人话就是例如给你一堆字符串(称为模式串)和一个字符串(称为文本串),让你求模式串们在文本串出现的总次数。 来直接看模板题: AC 自动机
阅读全文
摘要:分块 前言 在了解过树状数组和线段数之后,我们已经能处理许多区间的信息修改和查询的题目。但当信息不具有区间可加性时,用树状数组和线段树就不好处理了,这时候就可以用到一种优雅的暴力——分块。 简介 分块是一种思想,通过适当的划分,预处理一部分信息并保留,用空间换时间达到时空平衡,来完成对数列一些区间操
阅读全文
摘要:树状数组总结 前言 树状数组是数据结构中的一股清流,代码简洁,思路清晰,又好理解 qwq。 前置芝士 lowbit:https://www.cnblogs.com/zhouruoheng/p/18003331 简介 树状数组是一种基于 lowbit 的用于维护 个数前缀和信息的数据结构。
阅读全文
摘要:双向广搜(meet in the middle) 简介 双向广搜是搜索的一种进阶优化技巧,例如在已知终点和起点的情况下求是否能到达,需要走多远路。只从起点开始搜索可能会很费时间,那既然已知终点,为何不从终点同时开始进行搜索,看看是否能在中间相遇,也就是双向广搜(meet in the middle)
阅读全文
摘要:线段树合集 线段树:https://zhuanlan.zhihu.com/p/656702623 扫描线:https://oi-wiki.org/geometry/scanning/ or https://zhuanlan.zhihu.com/p/103616664 or https://www.c
阅读全文
摘要:主席树 前言 主席树也是一种数据结构,是线段树的进阶,作用是可以保留历史版本,支持回退,就是回到之前某个未修改的状态。就像我们在写博客时如果误删了重要的内容,就可以用 Ctrl + z 撤回一次操作,也可以用Ctrl + Shift +z 还原我们撤回的操作,这就需要存下每次编辑的操作。 基本原理
阅读全文
摘要:关于离散化的那些事 离散化,本质上就是一种 hash,我们需要用到的只是数据的排名而不是数据本身,通过映射的方法把跨度大又疏松的数据转化为跨度小的数据。 离散化一般有两种形式,一种是 sort+unique,另一种是 map。 sort+unique 首先就是直接用数组排序后去重,将需要用的所有数塞
阅读全文
摘要:Treap 前置芝士 二叉搜索树(BST),见 BST。 平衡二叉树(AVL)。 先来介绍一下平衡二叉树。 背景 BST 出现以后,人们很快发现一个问题,当其维护一个有序序列时,很可能会退化成链。如图: 这样的话,原来 的复杂度就退化为 ,这是我们无法接
阅读全文
摘要:BST 基础芝士 给定一棵二叉树,每个节点有权值,定义“BST 性质”为: 对于树中的任意一个节点 都有: 的权值大于 的左子树中任意节点的权值。 的权值小于 的右子树中任意节点的权值。 即 \(左子树任意点的权值 < x < 右子树任意点
阅读全文
摘要:矩阵乘法 前言 矩阵乘法属于数论中的知识点,其实也就是新的概念,就像向量的运算一样,接受了之后就好了,当然可能会容易忘记,所以还是要多用多练。 基本概念 矩阵是一个按照长方阵列排列的复数或实数集合。 形如 \[A = \begin{bmatrix} a_{1,1} & a_{1,2} & \cdot
阅读全文
摘要:树链剖分 前言 树链剖分听上去就挺高级,实际上,和线段树一样,理解其中的原理就简单得多。重点还是代码,码量极长,还是一句话,熟能生巧,多练。 转载:树链剖分详解 by ChinHhh P3384 【模板】重链剖分/树链剖分 P3384 分析 基础板子题,注意细节。 code #include <bi
阅读全文