摘要:
指针, C语言的精髓 莫队先咕几天, 容我先讲完树剖 (因为后面树上的东西好多都要用树剖求 LCA, 树剖求 LCA 比倍增求 LCA 常数小). 什么是指针 保存变量地址的变量叫做指针. 这是大概的定义, 但是Defad认为这个定义不太好理解, 所以我们先不看. 我们的电脑里都有随机存储器 RAM 阅读全文
摘要:
重链剖分, 树上路径问题大杀器 首先, 什么是树链剖分 数组, 要进行修改查询是非常方便的, 一眼线段树. 但是树并不是. 看一下我们目前已有的树上修改查询技术. 树上差分 只能修改, 最后才能查询, 不然就只能很慢的单点查询, DFS 序 + 线段树 只能进行子树操作, 不能进行路径操作. BFS 阅读全文
摘要:
树上主席树 主席树, 但是维护树上路径信息. 由于Defad今天忌离散化, 就不离散化了, 把值域开大点一般没啥问题. 上次的主席树有个朋友说没完全讲清楚, 这次先讲透了 主席树, 整体围绕的是前缀和, 用"批判的继承"维护前缀和, 然后在前缀和上二分. 为什么主席树不可修改, 就是因为这个前缀和思 阅读全文
摘要:
C语言离散化 最近看到STL就不想用, 于是写个C语言离散化, 居然能过主席树板子, 就写个博客介绍一下. qsort和bsearch都在<stdlib.h>或<cstdlib>里. 什么是离散化 一种映射, 可以把值域从 \([1, Val_{\max}]\) 变成 \([1, N]\) 且保留大 阅读全文
摘要:
题解 ICPC 2019 SH 区域赛 F 树上简单问题 CF的Gym里没找着 牛客的题目链接 首先这个题多测非常SB, 每次都要清空, 需要特别注意. 树剖应该都会吧, Defad之后也会发博客讲解, 这里主要讲一下线段树维护区间加区间乘区间赋值区间立方和. 区间加 首先, 想一下我们要维护什么. 阅读全文
摘要:
线段树的各种扩展 前情提要线段树, 算法竞赛掌管区间的神, 权值数据结构水各种题. 小技巧 动态开点 这篇博客所有的线段树扩展都基于动态开点, 所以先讲一下. 先申请一个很长的数组, 需要新结点就从数组里申请. 这是一种内存池思想, 可以避免内存的多次申请与释放 (更多的是可以避免指针), 在有文字 阅读全文
摘要:
权值数据结构水各种题 前置知识 树状数组, 线段树, 分块... 反正任何你能想到的能求和的数据结构就行, 只要数据结构能单点加求区间和, 就能当权值数据结构. 给树状数组和线段树的链接吧, 分块现在没有, 以后大概率也没有 (莫队应该会有). 树状数组及其各种扩展 线段树, 算法竞赛掌管区间的神 阅读全文
摘要:
线段树, 算法竞赛掌管区间的神 什么是线段树 上回讲树状数组的时候说过, 是一种分治数据结构, 把区间从中间劈开, 通过左子区间和右子区间的合并得到大区间. 上回的树状数组及其各种扩展. 线段树长什么样 观察线段树. 再次思考, 把区间从中间劈开, 通过左子区间和右子区间的合并得到大区间. 两个子区 阅读全文
摘要:
树状数组及其各种扩展 什么是树状数组 一种简单的区间数据结构, 可以维护简单修改的数组. 树状数组长什么样 \(\displaystyle val_{x} = \sum a_{i}, i \in (x - \operatorname{lowbit}(x), x]\) 注意是左开右闭区间, \(\di 阅读全文