首页 > 其他分享 >线段树合并 学习笔记

线段树合并 学习笔记

时间:2024-05-26 20:57:07浏览次数:15  
标签:return int 线段 合并 mid 笔记 Merge

过程

合并并不困难,对于两棵线段树,合并无疑就是就两棵线段树维护的区间信息进行合并。

就比如,有两棵线段树如下图:

pkQq0hD.png
pkQqr1H.png
将第二棵树合并到第一棵树,就是把除了维护 \([2, 2]\) 的全部对应加,而 \([2, 2]\) 则新开节点维护。

时间复杂度显然 \(\mathcal{O}(n \log n)\)。

实现

int Merge(int x, int y, int l, int r){
        if (!x || !y) {
            return x + y;
        }

        if (l == r) {
        //merge segment
            return x;
        }
        
        int mid = l + r >> 1;

        s[x].l = Merge(s[x].l, s[y].l, l, mid);
        s[x].r = Merge(s[x].r, s[y].r, mid + 1, r);
        
        pushup(x);
        
        return x;
    }

当然,也可以开新树维护合并结果。

标签:return,int,线段,合并,mid,笔记,Merge
From: https://www.cnblogs.com/zdrj/p/18214262

相关文章

  • 【Java笔记】第8章:面向对象的三大特性(封装、继承、多态)
    前言1.三大特性概述2.封装3.继承4.多态结语#include<GUIQU.h>intmain{上期回顾:【Java笔记】第7章:面向对象个人主页:C_GUIQU归属专栏:【Java学习】return一键三连;}前言各位小伙伴大家好!上期小编给大家讲解了Java中的面向对象,接下来讲讲Java中面向......
  • 算法课程笔记——KMP&字符串哈希
    算法课程笔记——KMP&字符串哈希就是模板题aba是前后缀,真前后缀就只有a/b /a避免出现不同字符有相同的值相当于进制如果你能熟练掌握正则表达式,用库还能更快......
  • (阅读笔记)TensorFlow自然语言处理 ((澳)图珊·加内格达拉)
    链接:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqsoTensorFlow与NLP概述:介绍了TensorFlow框架和NLP的基本概念,以及两者相结合的重要性。TensorFlow基础:详细讲解了TensorFlow的安装、配置以及基本使用方法,为后续的NLP应用打下基础。NLP任务与数据:概述了NLP中的......
  • 深度学习 PyTorch 笔记 (1) :预备知识(张量、线代、微分基础)
    《动手学深度学习》笔记——(1)预备知识(张量、线代、微分基础)教材:https://zh-v2.d2l.ai文章目录1数据操作1.1n维数组与张量1.2初始化1.3访问元素1.5运算2数据预处理2.1创建人工数据集2.2读取数据集2.3处理缺失数据3线性代数3.1标量3.2向量3.3矩阵3.4......
  • 高斯消元学习笔记
    高斯消元学习笔记其实这个主题能够复活主要还是粘了\(\text{LGV}\)引理的光,不然我还不知道高斯消元其实不光能求解线性方程组。求解线性方程组这个只能说是典中典了,我不相信没有一个人的高斯消元不是从这里开始的。我们考虑求解线性方程组的本质:将每一个式子所有未知数前都......
  • Java学习笔记(二)
    Java学习笔记(二)快捷方法生成psvm>>publicstaticvoidmain(String[]args){}main>>publicstaticvoidmain(String[]args){}sout>>System.out.println();i.sout>>System.out.println(i);i.soutv>>System.out.println("i=&......
  • 【精简笔记】JavaScript基础内容大总结
    往期文章目录【精简笔记】JavaScript基础内容第一天【精简笔记】JavaScript基础内容第二天【精简笔记】JavaScript基础内容第三天【精简笔记】JavaScript基础内容第四天【精简笔记】JavaScript基础内容第五天文章目录往期文章目录前言一、JavaScript的书写位置1.......
  • 线段树结构体模板
    线段树是一种维护区间和等功能的数据结构structSegTree{ structnode{ intl,r,sum,len,laz; }tree[N<<2]; inlinevoidpushdown(intu){ intlson=u<<1,rson=lson|1; tree[lson].laz+=tree[u].laz; tree[rson].laz+=tree[u].laz; tree[lson].sum+=tree[lson].len......
  • LGV 引理学习笔记
    \(\text{LGV}\)引理学习笔记\(\text{LGV}\)引理一般用于求解有向无环图中多条不相交路径的方案数,引理内容如下。引理定义\(w(P)\)指的是路径\(P\)上所有边权的乘积(在路径计数问题中认为所有边权均为\(1\)即可),\(e(A,B)\)指的是\(A\toB\)的所有路径的\(w\)和。对......
  • OOP笔记 —— 多态(Polymorphism)
    多态就是同一个方法的不同实现(即:相同的函数名,不同的函数体)多态的精髓在于父类指针的使用:将子类的地址赋给父类指针,即父类指针指向子类对象注意:用指针去调用成员方法时,通过“->”符号1.虚函数(VirtualFunction)此处的虚函数是指非纯虚函数。定义:非纯虚函数是一个带有virt......