首页 > 其他分享 >套路的数据结构

套路的数据结构

时间:2023-10-04 22:33:15浏览次数:40  
标签:套路 text sqrt 查询 tag 数据结构 最值 times

1

给定长度为 \(n\) 的序列 \(a,b\)。两种操作:

  1. 询问区间 \([l,r]\),查询 \(\max\limits_{i=l}^{r}{\{a_i\times b_i\}}\)
  2. 给定 \(l,r,v\),区间 \(\forall i\in[l,r]\),\(b_i\gets b_i +v\)。

分块。

修改:整块维护块内最值、李超线段树(维护若干个斜率为 \(a_i\) 、截距为 \(a_i\times b_i\) 的直线)、加法 \(\text{tag}\)。

整块:查询 \(x=(\text{tag}+v)\) 的极值,更新块内最值、\(\text{tag}\)。

散块,pushdown 加法 \(\text{tag}\),重构该块。

查询:平凡。

块长取 \(O(\sqrt n)\)。时间复杂度为 \(O(m\sqrt n\log n)\)。

标签:套路,text,sqrt,查询,tag,数据结构,最值,times
From: https://www.cnblogs.com/sprads/p/17742860.html

相关文章

  • 【数据结构】- 线段树
    线段树简介线段树是可以维护区间信息的数据结构。线段树将每个长度不为\(1\)的区间划分成左右两个区间递归求解,故把整个线段划分为一个树形结构,通过合并左右两区间信息来求得该区间的信息。根据建树方式可分为普通线段树和动态开点线段树。根据区间信息可分为普通线段树......
  • 【数据结构】- 堆
    堆简介堆是可以维护最值的数据结构。其每个节点有一个键值\(val\),堆将节点按键值确定父亲/儿子关系,故把所有节点连为一棵树,通过根找到最值。根据祖先关系可分为两类——大根堆以根节点键值最大,向叶节点递减。小根堆以根节点键值最小,向叶节点递增。根据支持操作可分为堆......
  • 数据结构-并查集
    并查集的使用范围:1.合并集合2.查询两元素是否属于同一集合   高级用法:  3.进行集合划分<带权并查集>  4.连通块块数查询&块内元素个数统计<连通图>  5.撤销合并<可持久化并查集>//本文暂不涉及,我还不会并查集基本操作:#definerep(i,n)for(int......
  • 点赞功能改进-Redis数据结构设计
        ......
  • 数据结构之"顺序表"
    前言......
  • 第03章 Python的数据结构、函数和文件
    本章讨论Python的内置功能,这些功能本书会用到很多。虽然扩展库,比如pandas和Numpy,使处理大数据集很方便,但它们是和Python的内置数据处理工具一同使用的。我们会从Python最基础的数据结构开始:元组、列表、字典和集合。然后会讨论创建你自己的、可重复使用的Python函数。最后,会学习P......
  • 高级数据结构--树状数组
    一维树状数组单点修改-区间查询输入32123120213输出6数据范围对于所有数据,\(1≤n,q≤10^6,∣a[i]∣≤10^6,1≤l≤r≤n,∣x∣≤10^6\)。点击查看代码#include<bits/stdc++.h>#defineIOSios::sync_with_stdio(false);cin.tie(nullptr),cout.tie(nu......
  • 【数据结构】3.跳表和散列
    1.顺序链表字典1.1字典抽象父类#pragmaonceusingnamespacestd;template<classK,classE>classdictionary{public:virtual~dictionary(){}//返回字典是否为空virtualboolempty()const=0;//返回有多少键值对virtualintsize()co......
  • [数据结构和算法] 堆/优先队列的实现
    预备知识:完全二叉树可以用数组表示:从下标0开始存储数据:左子节点=2*父节点+1,右子节点=2*父节点+2;从下标1开始存储数据:左子结点=2*父节点,右子节点=2*父节点+1;堆:大根堆:父节点的值大于等于左右子节点的值;小根堆:父节点的值小于等于左右子节点的值;......
  • 【数据结构】2.栈和队列
    1.栈1.1栈的抽象父类#pragmaoncetemplate<classT>classStack{public://析构函数virtual~Stack(){}//栈是否为空virtualboolempty()const=0;//栈的大小virtualintsize()const=0;//栈顶元素virtualT&top()=0......