文章目录

  • 前言
  • 合并
    • 代码
  • 分裂
    • 代码

前言

话说天下之树,分久必合,合久必分

合并

所谓合并,就是把两个树合并
以把B树合并到A树为例
如果A没有该节点,改成B的该节点返回
如果B没有该节点,直接返回
否则递归合并子树,最后更新答案即可
特殊的,如果到了叶子,就把A的答案加上B的答案

代码

void merge(int &a,int b,int l,int r){if(!a){a=b;return;}if(!b) return;if(l==r){tr[a].siz+=tr[b].siz;return;}merge(tr[a].ls,tr[b].ls,l,mid);merge(tr[a].rs,tr[b].rs,mid+1,r);pushup(a);
}

分裂

所谓分裂,就是把一棵树分裂
举例:把A树的[x,y]拆下来,形成B
类似线段树区间查询的方法

代码

void split(int a,int &b,int l,int r,int x,int y){ b=New();if(!a) return;if(x<=l&&r<=y){swap(tr[a],tr[b]);return;}if(x<=mid) split(tr[a].ls,tr[b].ls,l,mid,x,y);if(y>mid) split(tr[a].rs,tr[b].rs,mid+1,r,x,y);pushup(a);pushup(b);
}

模版:线段树合并+线段树分裂相关推荐

  1. BZOJ5419[Noi2018]情报中心——线段树合并+虚树+树形DP

    题目链接: [NOI2018]情报中心 题目大意:给出一棵n个节点的树,边有非负边权,并给出m条链,对于每条链有一个代价,要求选出两条有公共边的链使两条链的并的边权和-两条链的代价和最大. 花了一天的 ...

  2. 洛谷P4482 [BJWC2018]Border 的四种求法 字符串,SAM,线段树合并,线段树,树链剖分,DSU on Tree...

    原文链接https://www.cnblogs.com/zhouzhendong/p/LuoguP4482.html 题意 给定一个字符串 S,有 q 次询问,每次给定两个数 L,R ,求 S[L.. ...

  3. 【数据结构-树】1.树与森林(树的遍历、树的存储方法、并查集的实现)

    树的定义 树是一种数据结构,它是由 n(n>=1)n(n>=1)n(n>=1) 个有限结点组成一个具有层次关系的集合.把它叫做 "树" 是因为它看起来像一棵倒挂的 ...

  4. 线段树合并与分裂维护树上最长上升子序列 + 点分治删点 ---- 2021 牛客多校第一场 C - Cut the tree(详解)

    题目大意: 给你一个树,树上每个点都有一个权值valnodeval_{node}valnode​,路径(u,v)(u,v)(u,v) 上所有点按顺序有序序列,令f(u,v)f(u,v)f(u,v)是这 ...

  5. 线段树分裂与合并 ---- 树上差分 P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并

    题目链接 解题思路: 首先题目是对u,vu,vu,v这两条路径上面添加一个zzz,然后运用树上点的差分思想,对于分发路径u,vu,vu,v,我们在uuu上+1+1+1,在vvv上+1+1+1,在lca ...

  6. 线段树动态开点 - - - > 线段树合并

    逆序对 代码 P3224 [HNOI2012]永无乡 并查集+线段树合并       ​​​​ 代码 P5494 [模板]线段树分裂 #include<iostream> #include ...

  7. 线段树合并(四道例题)

    顾名思义,就是合并两个同构(就是维护的区间长度一样)线段树,其实也没啥比较nb的算法,就是一个一个节点的合并,但是如果在n个要合并的线段树里,如果一共有m个元素,则配合动态开点,复杂度会均摊成一个惊人 ...

  8. 【线段树合并】解题报告:luogu P4556雨天的尾巴 (树上对点差分 + 动态开点 + 线段树合并)线段树合并模板离线/在线详解

    题目链接:雨天的尾巴 本题本身是一个非常简单的一道树上差分的模板题,但是由于变态的数据范围,我们直接用数组是存不下的(本来使用一颗普通的线段树直接维护最大值即可.但是本题的空间只有128MB,直接按照 ...

  9. [BZOJ4756] [Usaco2017 Jan]Promotion Counting(线段树合并)

    传送门 此题很有意思,有多种解法 1.用天天爱跑步的方法,进入子树的时候ans-query,出去子树的时候ans+query,query可以用树状数组或线段树来搞 2.按dfs序建立主席树 3.线段树 ...

最新文章

  1. jQuery图片提示和文字提示
  2. tablespaces-datafiles示意图
  3. 1月24日学习内容整理:Django的admin组件源码分析及流程
  4. 智能会议系统(8)---流媒体中用到的几个协议简介
  5. 豪华版飞机大战系列(三)
  6. 用arduinoUNO做温度计
  7. linux解压apk文件,关于ipa和apk文件的解压
  8. 图像卷积原理及运算方法
  9. vue的provide和inject特性
  10. RS导出Excel交叉表角对应的列占用多列问题
  11. ue4变形、FlipFlop
  12. 川普哭诉“推特狂掉粉”,将用行政命令监管硅谷?
  13. mysql学生管理系统er图_java swing mysql实现的学生选课成绩信息管理系统附带视频指导教程及数据库ER图...
  14. 特征选择的几种常见方法
  15. NovAtel GPS常用设置方法及注意事项
  16. 炒股,你必须弄明白这9个问题
  17. Ansys workbench结构线性静力学分析-应变分析
  18. PPT个人学习笔记(二)——展示的规则
  19. 在不打开excel情况下将万得wind函数写入
  20. MATLAB顺序读取文件夹数据

热门文章

  1. 一文读懂 AVL 树
  2. 湘乡江南计算机学校,湘乡职业中等专业学校2021年招生录取分数线
  3. android自定义金额输入键盘_Android 自定义输入支付密码的软键盘实例代码
  4. dakai微信小程序 ios_iOSAPP跳转微信小程序
  5. cgi备份还原和ghost有什么区别_手动GHOST还原重装系统详细教程
  6. # 睡眠3秒_【for fun】睡眠排序算法
  7. python判断列表是否为空_Jinja2: 判断返回的列表是否为空
  8. python base64编码_JS和Python实现AES算法
  9. 文件共享服务器第二部,第二章-构建Samba文件共享服务器.docx
  10. 电子商务与计算机科学与技术的相关性,电子商务、计算机科学与技术、法学等相关专业。.doc...