segtree

package
v0.0.0-...-8a7fe10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 23, 2024 License: MIT Imports: 0 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type LazySegmentTree

type LazySegmentTree struct {
	// contains filtered or unexported fields
}

LazySegmentTree 动态开点线段树·其二·延迟标记(区间修改 + 区间覆盖) 同时支持区间修改和区间覆盖的,会比只支持一种的繁琐一些。

func NewLazySegmentTree

func NewLazySegmentTree(left, right int, merge func(lo, ro int) int) *LazySegmentTree

NewLazySegmentTree 初始化线段树节点 merge 是根据左右儿子节点,确定本节点的值

func NewLazySegmentTreeWithNums

func NewLazySegmentTreeWithNums(nums []int, merge func(lo, ro int) int) *LazySegmentTree

NewLazySegmentTreeWithNums 根据数组初始化线段树,左右边界为:[1, len(nums)] merge 是根据左右儿子节点,确定本节点的值

func NewSumLazySegmentTree

func NewSumLazySegmentTree(left, right int) *LazySegmentTree

NewSumLazySegmentTree 初始化区间和的线段树节点

func NewSumLazySegmentTreeWithNums

func NewSumLazySegmentTreeWithNums(nums []int) *LazySegmentTree

NewSumLazySegmentTreeWithNums 根据数组初始化区间和线段树,左右边界为:[1, len(nums)]

func (*LazySegmentTree) Add

func (t *LazySegmentTree) Add(left, right int, add int)

Add 区间增加 区间 [left, right] 的值都加上 add

func (*LazySegmentTree) Query

func (t *LazySegmentTree) Query(left, right int) int

Query 根据配置的 merge 函数,查询区间 [left, right] 的值

func (*LazySegmentTree) Update

func (t *LazySegmentTree) Update(left, right int, value int)

Update 区间覆盖 把区间 [left, right] 的值都修改为 value

type SegmentTree

type SegmentTree struct {
	// contains filtered or unexported fields
}

SegmentTree 动态开点线段树·其一·单点修改

func NewSegmentTree

func NewSegmentTree(left, right int, merge func(lo, ro int) int) *SegmentTree

NewSegmentTree 初始化线段树 merge 是根据左右儿子节点,确定本节点的值

func NewSegmentTreeWithNums

func NewSegmentTreeWithNums(nums []int, merge func(lo, ro int) int) *SegmentTree

NewSegmentTreeWithNums 根据数组初始化线段树,左右边界为:[1, len(nums)] merge 是根据左右儿子节点,确定本节点的值

func NewSumSegmentTree

func NewSumSegmentTree(left, right int) *SegmentTree

NewSumSegmentTree 初始化区间和线段树

func NewSumSegmentTreeWithNums

func NewSumSegmentTreeWithNums(nums []int) *SegmentTree

NewSumSegmentTreeWithNums 根据数组初始化区间和线段树,左右边界为:[1, len(nums)]

func (*SegmentTree) Query

func (t *SegmentTree) Query(left, right int) int

Query 根据配置的 merge 函数,查询区间 [left, right] 的值

func (*SegmentTree) Set

func (t *SegmentTree) Set(i int, do func(old int) int)

Set 单点修改,修改指定位置的值

闭包用于返回修改后的节点值

闭包的参数是节点的修改前的值,节点不存在时为 NewSegmentTree 里的默认值,闭包的返回值为节点修改后的值

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL