首页 > 其他分享 >线段树优化建图一种编号方式的理解

线段树优化建图一种编号方式的理解

时间:2024-07-22 12:28:45浏览次数:12  
标签:结论 右链 奇数 int 线段 建图 冲突 编号 节点

int id(int l,int r) {return (l+r)|(l!=r);} //代码1

证明思路:引导并说明某种做法发生冲突的情况,并证明修改后不会发生冲突

首先让我们考虑如果为

int id(int l,int r) {return (l+r);} //代码2

会出现什么冲突,如图

本图为uoj群友 南门阳德 提供,在此感谢

此时 [1,3] 与 [2,2] ,[1,5] 与 [3,3] 冲突

结论1:线段树中序遍历节点l+r单调不降,且节点u只在长度为奇数时会与左儿子右链端点的l+r相同

显然对于每一个节点u,\(l_{lson}+r_{lson}<l_u+r_u<l_{rson}+r_{rson}\)

因此我们只需要证明任意节点u大于等于其左儿子的右链终点

当 \(r_u-l_u+1\) 为奇数,则左儿子右链端点为 \((l_u+r_u)/2\),结论成立

当 \(r_u-l_u+1\) 为偶数,则左儿子右链端点为 \((l_u+r_u-1)/2\),结论成立

结论2: \(l_u+r_u\) 小于右儿子左链终点

与结论1证法相同

结论3:叶结点 \(l_u+r_u\) 为偶数

由结论1,只有节点u在长度为奇数时会与左儿子右链终点冲突。

由结论2,节点u不会与右子树冲突。

此时我们选择对于非叶结点长度为奇数的点,将其编号加1。(冲突解决措施,即代码1)

由结论2,3,因为长度为奇数的节点l+r为偶数,叶结点与其不同且也为偶数,因此将父节点加1后,与右儿子左链终点仍不冲突。

因此该编号方式正确。

标签:结论,右链,奇数,int,线段,建图,冲突,编号,节点
From: https://www.cnblogs.com/classblog/p/18315792

相关文章

  • 使用python图像去噪没有获得所需的重建图像
    我是python机器学习的初学者,我正在编写一个程序,使图像变得嘈杂,然后我的程序输出重建的图像。我正在使用加性高斯白噪声并使用前馈神经网络。我的程序显示真实图像、噪声图像和重建图像。这些是我通常得到的结果。有人知道如何解决这样的问题吗?这是我的代码:ap......
  • 数据结构——李超线段树 学习笔记
    数据结构——李超线段树学习笔记维护直线考虑线段树维护区间最优线段。其中,最优线段指的是,在区间\([l,r]\)中,中点\(mid\)处最优的线段。我们称一个线段在单点更优/最优,显然,是指此处的函数值更大。我们下面称一个线段在区间内更优/最优,是指在中点处的比较。......
  • 线段树分治
    线段树分治线段树分治可以解决这样的问题:对于一些操作,每个操作只在\(l\)~\(r\)的的时间内有效。对于一些操作,询问某个时间点所有操作的贡献。经典例题算法思路对于这道题,因为二分图的充要条件是不存在奇环,所以可以使用扩展域并查集解决。我们考虑离线优化:对于每......
  • 线段树优化建图
    $\quad$在做题时,我们会遇到这种问题:区间性的连边。$\quad$显然,直接连边很容易\(T\)掉,而且内存占用也是我们无法接受的,所以我们就可以采用一种更加方便(其实看起来更麻烦)的方法--线段树优化建图。$\quad$首先我们要有一棵入树与出树(这里用一下_ducati的图)$\quad$入树......
  • 线段树优化建图
    首先看这个问题:一张\(N\)个点的有向图,初始没有任何边,有\(M\)次操作:建\(1\)条边\(u\rightarrowv\),边权为\(w\)。建\(r-l+1\)条边\(u\rightarrow\foralli\in[l,r]\),边权为\(w\)。建\(r-l+1\)条边\(\foralli\in[l,r]\rightarrowu\),边权为\(w\)。求建完边......
  • 【学习笔记】线段树优化建图
    前言2023.5.31贺了线段树优化建图板子。当时那段时间还被\(bobo\)一顿乱\(D\),让我多写点\(DP\),数学,少些点重复的数据结构。2024.7.19没想到暑假集训CSP提高模拟2\(T3\)放了个线段树优化建图板子,加上之前线段树优化建图代码是贺的,今年寒假本想找时间步一下的结果没去......
  • 线段树
    把给定的区间转换成如图所示的一棵二叉树每次把区间一分为2,左边是左儿子,右边是右儿子对于每个节点的信息,都可以由两个儿子的信息得到如何单点查询/修改可以发现,两个儿子处理的区间没有交集,所以每次只要判断是在左儿子还是在右儿子,不断的递归对于区间查询,每一......
  • 单目和RGB-D稠密建图
    文章目录单目稠密建图立体视觉稠密深度估计更新深度图极线搜索块匹配RGB-D稠密建图点云地图从点云重建网格八叉树地图其他类型的地图地图的用处:定位、导航、避障、重建、交互。导航、避障、重建使用的是稠密地图。单目稠密建图缺点:双目、和移动单目相机,都可......
  • 线段树(原理、构造和区间查询,例题:Balanced Lineup)
    概念原理    线段树是分治法和二叉树的结合,二叉树上的节点都是根据分治得到的。节点所表示的,也就是线段,可以是区间和、最值或者是其他的,,每次分治,左右子树各一半,每个节点的值代表了以它为根的子树上所有节点的值。通过线段树,大区间的解可以从小区间的解合并而来。构......
  • 使用Java和Neo4j构建图数据库应用
    使用Java和Neo4j构建图数据库应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代应用开发中,图数据库在处理复杂的关系和网络数据时表现出色。Neo4j是一个流行的图数据库,它允许我们以图的形式存储和查询数据。本文将介绍如何使用Java和Neo4j构......