线段树
文章平均质量分 50
Wangduoyu
这个作者很懒,什么都没留下…
展开
-
可持久化线段树(静态,第k小数)
第k小数 题目链接 题意: 给定长度为NNN的序列AAA,下标为1∼N1 \sim N1∼N 现在要执行 MMM 次操作,其中第 iii 次操作为给出三个整数 li,ri,kil_i,r_i,k_ili,ri,ki,求 A[li],A[li+1],⋅⋅⋅,A[ri]A[l_i],A[l_i+1],···,A[r_i]A[li],A[li+1],⋅⋅⋅,A[ri] (即 AAA 的下标区间 [li,ri][l_i,r_i][li,ri])中第 kik_iki 小的数是多少。 Sol: 可持久原创 2021-10-03 20:09:02 · 150 阅读 · 0 评论 -
可持久化Trie树
文章目录朴素版Trie树可持久化Trie树例题:题意:Sol:Code: 朴素版Trie树 朴素版Trie树 可持久化Trie树 可持久化Trie树,对于每个版本,需要将所有结点创建出来并与上一个版本建立联系。 优点: 从某个版本开始,能够遍历到该版本内的所有结点。 可以解决动态的异或问题。 例题: 最大异或和 题意: 给定一个非负整数序列 aaa,初始长度为 NNN。 有 MMM 个操作,有以下两种操作类型: A x:添加操作,表示在序列末尾添加一个数 xxx,序列的长度 NNN 增大 111。 Q l原创 2021-10-03 16:55:20 · 224 阅读 · 0 评论 -
营业额统计(Treap的简单应用)
Treap的简单应用 题目链接 题意: 设第 iii 天的营业额为 aia_iai,则第 iii 天(i≥2i \ge 2i≥2)的最小波动值 fif_ifi 被定义为: fi=min1≤j<i∣ai−aj∣f_i=min_{1 \le j < i}|a_i-a_j|fi=min1≤j<i∣ai−aj∣ 求出每一天的fif_ifi总和,其中:f1=a1f_1 = a_1f1=a1 Sol: 建立平衡树,查询每天营业额在平衡树的前驱后继与之比较统计 code: #inclu原创 2021-10-02 22:45:26 · 349 阅读 · 0 评论 -
平衡树(模板)
平衡树の模板 您需要写一种数据结构,来维护一些数,其中需要提供以下操作: 插入数值 xxx。 删除数值 xxx(若有多个相同的数,应只删除一个)。 查询数值 xxx 的排名(若有多个相同的数,应输出最小的排名)。 查询排名为 xxx 的数值。 求数值 xxx 的前驱(前驱定义为小于 xxx 的最大的数)。 求数值 xxx 的后继(后继定义为大于 xxx 的最小的数)。 Code: #include <bits/stdc++.h> using namespace std; const int原创 2021-10-02 22:35:51 · 168 阅读 · 0 评论 -
亚特兰蒂斯(线段树,扫描线,离散化,二分)
亚特兰蒂斯 题目链接 题意:有n个矩形,求这些矩阵的总面积(矩阵有重叠) Sol:将y离散化,线段树维护区间的长度。 Code: #include<bits/stdc++.h> using namespace std; const int N = 100010; int n; struct Segment{ double x, y1, y2; int k; bool operator < (const Segment &b) const {原创 2021-09-28 22:02:19 · 206 阅读 · 0 评论