首页 > 其他分享 >珂朵莉树

珂朵莉树

时间:2024-04-05 13:34:40浏览次数:13  
标签:迭代 复杂度 用法 朵莉树 区间 数据结构

一种特殊的数据结构。

介绍

李欣隆发明。本质上并不是一种树形数据结构,思想是把一个区间按 \(value\) 划分成不少的小区间,然后暴力操作。

显然,这样做的复杂度完全依赖于小区间的多少,所以复杂度需要由区间推平操作保证。

在随机的数据下,可以证明每次的小区间期望有 \(\log_2n\) 个,并且常数极其小。所以常常可以通过 \(10^7\) 的数据。离散化?不存在的。

前置

你需要熟练的操作结构体。

比如你需要学习怎样重载运算符。

bool operator <(const& tt)const{ return ll<tt.ll; }

以及一些 \(set\) 的基本用法,还有迭代器的用法,当然,迭代器可以直接 \(auto.\)

标签:迭代,复杂度,用法,朵莉树,区间,数据结构
From: https://www.cnblogs.com/chihirofujisaki/p/18115677/ChthollyTree

相关文章

  • 珂朵莉树ODT 模板
    构造set:structnode{intl,r;mutableintv;node(intl,intr,intv=0):l(l),r(r),v(v){}booloperator<(constnode&a)const{returnl<a.l;}};set<node>s;分裂set:autosplit(intpos){aut......
  • 珂朵莉树
    简介珂朵莉树一般多见于区间推平操作,即把[l,r]区间的值都赋值成k值的区间推平操作,在数据随机中可以出现奇效。模板点击查看代码structnode{intl,r;mutableintv;//mutable相反于const用于操作存于set(存于set的均为const,但是加了mutable即可修改其值)中的值.......
  • [学习笔记]珂朵莉树
    目录0x00:介绍1x00:思想1x01:节点保存1x02:核心操作split1x03:推平操作assign2x00:例题2x01:CF896C2x02:CF915E3x00:总结0x00介绍珂朵莉树(ChthollyTree),又称ODT(OldDriverTree),一种数据结构,但似乎暴力到不能称之为数据结构。可以很好地骗分,在随机数据下十分有效,常用于将\([l......
  • 珂朵莉树
    珂朵莉树的适用范围是具有区间赋值操作且数据随机的题目。珂朵莉树的思想在于随机数据下的区间赋值操作很可能让大量元素变为同一个数,所以我们以三元组<l,r,v>的形式保存数据(区间[l,r]中的元素的值都是v):structnode{lll,r;mutablellv;//这里mutable要写不然......
  • 柯学家——珂朵莉树 学习笔记
    柯学家——珂朵莉树学习笔记珂朵莉树(ChthollyTree),又名老司机树ODT(OldDriverTree)。起源自lxl的CF896CWillem,ChthollyandSeniorious。前置知识:std::set。思想将区间用set维护,每次对一个区间进行操作的时候,就将这个区间分离(split)出来。复杂度的保证依靠推平......
  • 颜色段均摊(珂朵莉树)
    珂朵莉树的复杂度分析CF896C珂朵莉树起源题LG4979矿洞:坍塌珂朵莉树可以在区间覆盖时顺便把左右的同色段合并了,这样任意时刻相邻的两段都不同色本题询问时判断\([l,r]\)是否同色就可以通过判断\([l,r]\)是否在同一段实现了https://www.luogu.com.cn/problem/P8146......
  • 珂朵莉树——优雅的暴力
    珂朵莉树引入珂朵莉树(ChthollyTree),又名老司机树(OldDriverTree)。起源于CF896C。这种想法的本质是基于数据随机的「颜色段均摊」,而不是一种数据结构。前置需要了解STL的set的基本用法。比如:insert(x) 当容器中没有等价元素的时候,将元素x插入到 set 中。er......
  • 珂朵莉树(ODT)
    处理区间赋值问题的神器!珂朵莉树的实现非常简单(baoli),建树时把区间的左右端点和权值作为一个节点全扔到std::set(或者链表)中维护即可split:核心操作之一,将一段区间提取出来,在此之上进行一些操作assign:核心操作之二,也是降低珂朵莉树时间复杂度的重要操作,把一段区间推平赋值,......
  • 珂朵莉树
    区间赋值的数据结构都可以骗分,在数据随机的情况下,复杂度可以保证。时间复杂度:O(nloglogn)structODT{ structnode{ intl,r; mutableLLv; node(intl,intr=-1,LLv=0):l(l),r(r),v(v){} booloperator<(constnode&o)const{returnl<o.l;} }; s......
  • 【模板】ODT | Old Driver Tree | 珂朵莉树
    postedon2021-04-0220:38:49|under学术|source这个东西本身不常用,但是这个维护连续段的写法很常用。标签:暴力、数据结构、std::set#include<set>template<cla......