随笔分类 - OI / 数据结构
摘要:treap 首先每个点有键值和优先级 键值为节点本身的权值,优先级为每个节加入时所赋予的随机权值 对于树上一个节点左儿子的键值小于本节点的键值小于右节点的键值,对于键值来说是一颗二叉查找树 对于优先级来说一个节点的优先级要大于它的两个儿子的优先级,本质上是一个大根堆,用随机权值赋值是用来使深度接近l
阅读全文
摘要:扫描线 P5490【模板】扫描线 & 矩形面积并 (并非板子题 有人说它是板子题,但我认为它比二维数点复杂多了 首先考虑最暴力的暴力,我们暴力用矩形覆盖每一个点,然后再统计哪些点被覆盖了 然后我们采用二维数点的思想,对 一维进行从小到大模拟,这样对于 轴就是一个序列,当 \(
阅读全文
摘要:前置芝士 分块 算法理解 一种暴力顺序的优化 离线+暴力+分块 通常用于不带修只查询的一类问题 模板题P1972 [SDOI2009] HH的项链 首先使用暴力法求解此题 我们设我们有一个 表示现在扫到 区间,对于一个询问 我们暴力的将 \(L
阅读全文
摘要:写在前面 非常简单的分块,使我开心的转圈,稍微看了一下 oi wiki 就懂了,妈妈再也不用担心我的暴力了 正文 分块,非常优雅的暴力,本质是上是通过对原数据的适当划分,并在划分后的每一个块上预处理部分信息,从而较一般的暴力算法取得更优的时间复杂度。 例如(博客萌新好不容易整的): \[\begin
阅读全文
摘要:算法理解 DP的效率取决于三方面: 状态总数 每个状态的决策数 状态转移计算量 对应的优化方式: 状态总数的优化:类比搜索剪枝,去除无效的状态;降维,设计dp状态时用低维的dp 减少决策数量:状态转移方程的优化,例:四边形不等式优化,斜率优化 状态转移计算量优化:用预处理减少地推时间;用hash表,
阅读全文
摘要:算法简介 用于解决三维数点问题: 给定形如你个 的三维坐标,然后让你求有多少个点三个维度的坐标都小于这个点 做法:用分治思想将其转化为二维数点 二位数点:先用排序解决掉第一维,再用树状数组维护第二维小于它的点数 分治思想:我们把一个区间划分为两半,我们只统计左半部分修改对右半
阅读全文
摘要:写在前面 本菜鸡线段树学了好多遍 但是每次写还是得很长时间 有时有一个细节还要琢磨半天 所以为了今后避免以上事情发生 本菜鸡决定将这么长时间以来对线段树的认识汇总 好日后清算 ps:写道一半又卡住了,感谢nyn大佬指点迷津 ps :正好做到ybt线段树这一章,就扒出我原来的题解继续写吧 模
阅读全文
摘要:算法理解 RMQ问题就是对与区间最值查询一类问题的总称 对于RMQ问题的求解主要有以下两种方式: 线段树,建树O(n),查询O(logn),支持在线修改 ST表,预处理O(logn),查询O(1),不支持在线修改 这个单元主要讲解的是ST表 倍增思想 考虑一个数必然能被拆分成二进制,所以我们先预处理
阅读全文
摘要:前言 本蒟蒻学习了7,8遍树状数组才学会,原因不是因为我笨,而是没有把根本的理念先搞懂,so,我打算写这篇博客,把树状数组根本剖析一下 用途 用于快速单点修改,快速查询前缀和,从而快速查询区间和 工作原理 其中有数字的点存储的是树状数组的 ,灰色节点则是为了方便理解而画出的子虚乌有
阅读全文