首页 > 其他分享 >线段树解题技巧

线段树解题技巧

时间:2023-07-26 17:02:14浏览次数:30  
标签:可加性 线段 查询 修改 区间 解题技巧 维护

前言

线段树是一种在 \(\log\) 时间内维护区间信息的数据结构,其维护的信息通常具有区间可加性。

区间可加性,也就是由区间 \(A\) 和区间 \(B\),可以推出 \(A\cup B\)。

上面说到的区间,指的是区间内维护的信息。

如区间和,区间平方和,区间最值,区间最大子段,区间最长连续子段,这类问题就是具有区间可加性的。

关于线段树维护的题目,分为两类,一类是好维护的,一类是不好维护的,体现在修改与查询的关系并不大。下面分这两类进行分析。

好维护

好维护的信息通常是由修改可以推出查询,比如修改是将一个区间加上某个数,查询是查区间和,这时可以直接由修改推出查询。

标签:可加性,线段,查询,修改,区间,解题技巧,维护
From: https://www.cnblogs.com/zhangyuzhe/p/17582947.html

相关文章

  • 学不会的线段树
    前言(胡言乱语)“杭电杯”被狠狠薄纱......
  • P3352 [ZJOI2016] 线段树 思考--zhengjun
    有一个显然的\(O(n^3q)\)的做法:设\(f_{i,l,r,x}\)表示\(i\)次操作过后,区间\([l,r]\)的数\(\lex\),\(a_{l-1},a_{r+1}>x\)的方案数。转移:$$f_{i,l,r,x}=f_{i-1,l,r,x}\timesg_{l,r}+\sum\limits_{j<l}f_{i-1,j,r,x}\times(j-1)+\sum\limits_{j>r}f_{i-1,l......
  • 线段树
    //单点修改查询//http://ybt.ssoier.cn:8088/problem_show.php?pid=1549//https://www.luogu.com.cn/problem/P1198//用一维数组来存,当作完全二叉树来存#include<bits/stdc++.h>usingnamespacestd;constintN=2e5+10;longlongintm,p,n,last,t;charop;structnod......
  • 【codevs3012】线段覆盖4
      #include<iostream>#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;structhp{ intai,bi,ci;}a[1005];boolcmp(hpa,hpb){ returna.bi<b.bi;}constintM=1e6+2;intn,i,j,k,maxn,f[1005];int......
  • 【模板】线段树优化建图
    区间连区间luoguP6348[PA2011]Journeys略带卡常#include<bits/stdc++.h>usingnamespacestd;vector<pair<int,int>>e[4200001];intdis[4200001],id[4200001];intlson(intl){returnl*2;}intrson(intl){returnl*2+1;}voidbuild(int......
  • 洛谷 P8861 - 线段
    牛逼题。先考虑\(l\le10^5,10^5+1\ler\)的部分分:一种方法是线段树,即因为左右端点是独立的,因此对左右端点各维护一个权值线段树表示有多少个区间以这个值为左/右端点,这样对于修改,左端点的部分相当于先查询\(\lel\)的数的个数,然后将它们都挂到\(l\)上,最后把\(<l\)的部......
  • 线段树--区间最大值模板
    Smiling&Weeping----你是我绕过的山河错落,才找到的人间烟火ProblemDescriptionThereisasequence a oflength n.Weuse ai todenotethe i-thelementinthissequence.Youshoulddothefollowingthreetypesofoperationstoth......
  • 线段树hdu-4027
    Smiling&Weeping ----姑娘,倘若,我双手合十的愿望里有你呢ProblemDescriptionAlotofbattleshipsofevilarearrangedinalinebeforethebattle.Ourcommanderdecidestouseoursecretweapontoeliminatethebattleships.Ea......
  • 在线CAD如何配合three.js绘制带线宽的线段
    前言1.在线CAD的产品经常会被集成到很多用户的网页系统内,前端开发人员只要会JavaScript,就可以对在线CAD进行集成和二次开发,今天这篇文章我们讲一下梦想CAD控件云图(H5方式)如何配合three.js绘制带线宽的线段。2.在这之前,如果还没有安装梦想CAD控件的朋友,可以查看快速入门,链接如......
  • 浅谈虚树优化线段树
    前言我们都知道动态开点权值线段树的空间复杂度是\(O(n\logV)\)的,但是很多题目中这样的空间是会被卡的,那我们能不能优化呢?实现看看下面这一棵树:在上图中,红色节点使我们平常会开的点。但是我们发现,其实只要维护绿色的点和红色的叶子结点。其实,绿色节点就是所有叶子结点......