模版:线段树合并+线段树分裂
文章目录
- 前言
- 合并
- 代码
- 分裂
- 代码
前言
话说天下之树,分久必合,合久必分
合并
所谓合并,就是把两个树合并
以把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);
}
模版:线段树合并+线段树分裂相关推荐
- BZOJ5419[Noi2018]情报中心——线段树合并+虚树+树形DP
题目链接: [NOI2018]情报中心 题目大意:给出一棵n个节点的树,边有非负边权,并给出m条链,对于每条链有一个代价,要求选出两条有公共边的链使两条链的并的边权和-两条链的代价和最大. 花了一天的 ...
- 洛谷P4482 [BJWC2018]Border 的四种求法 字符串,SAM,线段树合并,线段树,树链剖分,DSU on Tree...
原文链接https://www.cnblogs.com/zhouzhendong/p/LuoguP4482.html 题意 给定一个字符串 S,有 q 次询问,每次给定两个数 L,R ,求 S[L.. ...
- 【数据结构-树】1.树与森林(树的遍历、树的存储方法、并查集的实现)
树的定义 树是一种数据结构,它是由 n(n>=1)n(n>=1)n(n>=1) 个有限结点组成一个具有层次关系的集合.把它叫做 "树" 是因为它看起来像一棵倒挂的 ...
- 线段树合并与分裂维护树上最长上升子序列 + 点分治删点 ---- 2021 牛客多校第一场 C - Cut the tree(详解)
题目大意: 给你一个树,树上每个点都有一个权值valnodeval_{node}valnode,路径(u,v)(u,v)(u,v) 上所有点按顺序有序序列,令f(u,v)f(u,v)f(u,v)是这 ...
- 线段树分裂与合并 ---- 树上差分 P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并
题目链接 解题思路: 首先题目是对u,vu,vu,v这两条路径上面添加一个zzz,然后运用树上点的差分思想,对于分发路径u,vu,vu,v,我们在uuu上+1+1+1,在vvv上+1+1+1,在lca ...
- 线段树动态开点 - - - > 线段树合并
逆序对 代码 P3224 [HNOI2012]永无乡 并查集+线段树合并 代码 P5494 [模板]线段树分裂 #include<iostream> #include ...
- 线段树合并(四道例题)
顾名思义,就是合并两个同构(就是维护的区间长度一样)线段树,其实也没啥比较nb的算法,就是一个一个节点的合并,但是如果在n个要合并的线段树里,如果一共有m个元素,则配合动态开点,复杂度会均摊成一个惊人 ...
- 【线段树合并】解题报告:luogu P4556雨天的尾巴 (树上对点差分 + 动态开点 + 线段树合并)线段树合并模板离线/在线详解
题目链接:雨天的尾巴 本题本身是一个非常简单的一道树上差分的模板题,但是由于变态的数据范围,我们直接用数组是存不下的(本来使用一颗普通的线段树直接维护最大值即可.但是本题的空间只有128MB,直接按照 ...
- [BZOJ4756] [Usaco2017 Jan]Promotion Counting(线段树合并)
传送门 此题很有意思,有多种解法 1.用天天爱跑步的方法,进入子树的时候ans-query,出去子树的时候ans+query,query可以用树状数组或线段树来搞 2.按dfs序建立主席树 3.线段树 ...
最新文章
- jQuery图片提示和文字提示
- tablespaces-datafiles示意图
- 1月24日学习内容整理:Django的admin组件源码分析及流程
- 智能会议系统(8)---流媒体中用到的几个协议简介
- 豪华版飞机大战系列(三)
- 用arduinoUNO做温度计
- linux解压apk文件,关于ipa和apk文件的解压
- 图像卷积原理及运算方法
- vue的provide和inject特性
- RS导出Excel交叉表角对应的列占用多列问题
- ue4变形、FlipFlop
- 川普哭诉“推特狂掉粉”,将用行政命令监管硅谷?
- mysql学生管理系统er图_java swing mysql实现的学生选课成绩信息管理系统附带视频指导教程及数据库ER图...
- 特征选择的几种常见方法
- NovAtel GPS常用设置方法及注意事项
- 炒股,你必须弄明白这9个问题
- Ansys workbench结构线性静力学分析-应变分析
- PPT个人学习笔记(二)——展示的规则
- 在不打开excel情况下将万得wind函数写入
- MATLAB顺序读取文件夹数据
热门文章
- 一文读懂 AVL 树
- 湘乡江南计算机学校,湘乡职业中等专业学校2021年招生录取分数线
- android自定义金额输入键盘_Android 自定义输入支付密码的软键盘实例代码
- dakai微信小程序 ios_iOSAPP跳转微信小程序
- cgi备份还原和ghost有什么区别_手动GHOST还原重装系统详细教程
- # 睡眠3秒_【for fun】睡眠排序算法
- python判断列表是否为空_Jinja2: 判断返回的列表是否为空
- python base64编码_JS和Python实现AES算法
- 文件共享服务器第二部,第二章-构建Samba文件共享服务器.docx
- 电子商务与计算机科学与技术的相关性,电子商务、计算机科学与技术、法学等相关专业。.doc...