线段树分治。以时间轴建立线段树,每一个线段树节点,存放[L,R]时间内,有影响的操作1,建立可持久化trie树,trie树以商店位置为root,就可以支持商店的区间查询,然后将操作0,按照商店位置排序,进行线段树分治,每次到一个节点,先把操作0插入trie树,然后把所有当前时间内存的有影响的操作1全 ...
分类:
其他好文 时间:
2020-07-08 20:13:47
阅读次数:
59
(鸽 王 归 来) #算法简介 线段树合并可以将2个权值线段树合并为一个。 #实现 很简单,我们的操作如下: 2棵线段树都有的节点,把它们的值合并。 只有一颗线段树有节点,那么合并出来的线段树节点的值就是这个节点的值。 依次递归下去搞定一切。 一般来说,如果不需要用合并前的线段树信息,我们就可以卡一 ...
分类:
其他好文 时间:
2020-07-08 20:06:13
阅读次数:
47
四叉树与引擎内置碰撞检测的结合运用。 效果预览 绿色为参加检测的对象(当前四叉树节点),红色为碰撞对象。 如何使用 引入脚本 QuadtreeCollision.ts , 新建一个 QuadtreeCollision ,并初始化为世界坐标系下的对齐轴向的包围盒(AABB)。 // 这边是挂载在can ...
分类:
其他好文 时间:
2020-07-07 19:56:57
阅读次数:
93
思路:构造一颗二叉树,递归计算左右子树的计算量, 再加上左子树矩阵*右子树矩阵的计算量。 坑:测试数据存在右括号多于左括号数量的情况,需要特殊处理一下。 import java.util.*; public class Main { public class Node { Node left, ri ...
分类:
其他好文 时间:
2020-07-07 12:58:09
阅读次数:
82
导入头文件 编写代码过程中,涉及动态内存分配等常用的函数,需要引入如下头文件 #include<stdio.h> #include<stdlib.h> 结构体定义 // 定义二分搜索树结构体 typedef struct Node { int data; struct Node * left; st ...
分类:
编程语言 时间:
2020-06-26 18:43:11
阅读次数:
77
二叉树概念 二叉树:每个节点最多有两个子节点 满二叉树:深度为K,有2^k-1个节点 完全二叉树:满二叉树属于完全二叉树,最后一层可满可不满,不满只可右部分缺失,其余层是满的 平衡二叉树:一棵空树或者左右子树的高度差的绝对值不能超过1 二分查找树:左子树节点的值比该节点的值小,右子树节点的值比该节点 ...
分类:
其他好文 时间:
2020-06-24 11:56:36
阅读次数:
58
地址:https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ <?php /** 给定一个二叉搜索树的根节点 root,返回树中任意两节点的差的最小值。 示例: 输入: root = [4,2,6,1,3,null,n ...
分类:
其他好文 时间:
2020-06-19 18:00:43
阅读次数:
51
第五章 树和二叉树中我学到的 一,基本定义:树、二叉树、完美二叉树、偏二叉树,节点关系,树的深度,叶节点等等的定义 二,树(二叉树)的基本储存结构 (1)用数组,适用于满二叉树 (2)链式结构 (3)数组加链表式:双亲孩子表示法(代码如下) tyepdef struct cNode{ int num ...
分类:
其他好文 时间:
2020-05-31 21:31:33
阅读次数:
46
Treap=Tree+Heap,即在普通二叉查找树的基础上每个节点有了一个新值域:强化值(因为它将普通二叉查找树强化为treap就自己起了这个名字,是用来满足堆性质的,即后文说满足堆性质都指强化值满足堆性质)。要求这个树节点的键值(即要代表的数)满足BST的性质、强化值满足小跟堆的性质(你非得大根堆 ...
分类:
其他好文 时间:
2020-05-31 18:15:35
阅读次数:
59
之前看HashMap的源码,看到一种说法觉得可以记住:任何数据结构都是由数组和链表组合演变而成。 二叉树其实就是一种链表结果。任一节点记录下左右子节点,从而组成了树的结构。 一、二叉树 树结构,对任一节点,左子树节点小于当前节点,右子树节点大于当前节点。 二、平衡二叉树 任一节点的左子树和右子树的高 ...
分类:
其他好文 时间:
2020-05-25 19:43:43
阅读次数:
72