信息学|数据结构
文章平均质量分 92
YangHao5
这个作者很懒,什么都没留下…
展开
-
扫描线略解
问题引入求 nnn 个矩形的面积并。1≤n≤1051\leq n\leq 10^51≤n≤105。离散化坐标首先,通过离散化,可以让矩形的坐标从 10910^9109 级别降至 10510^5105 级别。尽管如此,开一个 N2N^2N2 的二维数组来存储坐标系里的每个点,仍然还会导致空间超限。扫描线本章节中,部分图片来自这里。看到图中的虚线了吗?想想有一条平行于 y 轴的直线从...原创 2019-11-03 16:05:29 · 341 阅读 · 0 评论 -
可持久化数据结构学习笔记
文章目录1 可持久化线段树1.1 问题引入1.2 权值线段树1 可持久化线段树1.1 问题引入您需要写一个数据结构,维护一个数列 a[1...N]a[1...N]a[1...N],支持以下操作:输入 l r k(l≤r,k≤r−l+1l\leq r,k\leq r-l+1l≤r,k≤r−l+1),求 a[l...r]a[l...r]a[l...r] 中第 kkk 大的数。这就是经典的 ...原创 2019-11-01 15:28:59 · 234 阅读 · 0 评论 -
分块
分块由于我在网上找不到定义,只好编一个。分块 是一种将问题分解成若干个子问题,逐项解决子问题后得到原问题答案的思想。块考虑这样一个问题。你有一个序列 a[1...N]a[1...N]a[1...N],你需要写一个数据结构维护它,支持以下操作:修改 a[x]a[x]a[x] 的值;查询 a[L...R]a[L...R]a[L...R] 的最大值、和、按位与和、或和、异或和、与非和、或...原创 2019-10-24 14:41:19 · 267 阅读 · 0 评论 -
线段树略解(20191028更新)
线段树线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。如上图所示的线段树维护 [1,10][1,10][1,10] 区间。每个节点上的区间表示该节点维护的区间。线段树的时间复杂度 O(logN)O(\log N)O(logN)(建树复杂度为 O(N)O(N)O(N)),空间复杂度 T(N)T(N)T(N)。单点修改操作从根...原创 2019-10-20 20:42:31 · 451 阅读 · 0 评论 -
luogu P3380 【模板】二逼平衡树(分块实现)
题目描述您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:查询 kkk 在区间内的排名查询区间内排名为 kkk 的值修改某一位值上的数值查询 kkk 在区间内的前驱(前驱定义为严格小于 xxx,且最大的数,若不存在输出 −2147483647-2147483647−2147483647)查询 kkk 在区间内的后继(后继定义为严格大于 xxx,且最小的...原创 2019-10-17 19:45:38 · 245 阅读 · 0 评论 -
C++ set 用法略解(20191031更新)
先看一段代码。原创 2019-10-14 20:14:18 · 436 阅读 · 0 评论 -
luogu P1198 [JSOI2008] 最大数
居然不给听歌了。题目描述请求你维护一个数列,要求提供以下两种操作:查询当前数列中末尾 LLL 个数中的最大的数,并输出这个数的值。将 nnn 加上 ttt,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则 t=0t=0t=0),并将所得结果对一个固定的常数 DDD 取模,将所得答案插入到数列的末尾。Solution使用线段树维护数列。#include<cstdio...原创 2019-10-12 09:43:37 · 172 阅读 · 0 评论