浅谈珂朵莉树(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