浅谈珂朵莉树(ODT)

本文介绍了Chtholly Tree(ODT),一种源于CodeForces的题目解法的数据结构,它是一种二叉平衡树,常用于区间赋值和统计。虽然在数据随机的情况下性能优于线段树,但需要对set操作、迭代器和重载运算符有了解。文章还提到了初始化节点、split和assign等关键操作,并建议通过实际题目进行练习。
摘要由CSDN通过智能技术生成

浅谈珂朵莉树(Chtholly Tree)

What is Chtholly Tree?

Chtholly tree,别称Old Driver Tree(ODT),一种暴力+玄学的数据结构,起源于CodeFoeces平台上编号为896C的一道题—— “ Willem, Chtholly and Seniorious ”。一位用户Old Driver在给出了线段树的正解之后,又发布了一份前所未有的玄学解法,其中利用到的数据结构就是今日我们 喜闻乐见的 珂朵莉树。

珂朵莉树本质上是一个二叉平衡树,每一个节点 p ( l , r , v a l ) p(l,r,val) p(l,r,val)表示 [ l , r ] [l,r] [l,r]区间内的值都是 v a l val val。但是由于我们可爱的STL的存在,我们省去了超大的码量!

What can we do with it?

可以进行一些区间内的赋值,统计工作,在数据随机时吊打线段树,只要不故意卡数据都能用(目前比赛上还没见过卡数据的题),也可以在走投无路的时候偏分(线段树炸了)

前置知识

1. s e t set set的操作以及 i t e r a t o r iterator iterator迭代器

2.重载运算符 ( o p e r a t o r ) (operator) (operator)

3.概率学知识(如果你想证明他玄学的复杂度)

初始化

我们用结构体 n o d e node node来表示一个节点,其属性有:

1.左右边界 l , r l,r l,r

2.权值 v a l val val(表示 [ l , r ] [l,r] [l

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值