当前位置: 首页 > news >正文

珂朵莉树 ODT

能干什么/局限性

高效处理区间平推(区间赋值)的问题。

在随机数据下飞快。

如果没有区间平推,或者区间平推的操作数量可以被卡得很少甚至没有,就不适用。

前置知识

  • set

没了。

建点

每个点要维护一个区间,以及这个区间的信息。表示这个区间的信息都是相等的。

所有的点维护的区间都没有交集,且并集就是的区间就是 \(1\sim n\)

struct node{int l,r; //维护的区间mutable int val; //维护的信息//mutable 表示可以直接在 set 中修改node(int L,int R=-1,int VAL=0){l=L,r=R,val=VAL;}bool operator<(const node&other)const{return l<other.l;}
};
set<node> odt;

分裂(split)

传进去一个参数 \(pos\),表示把包含 \(pos\) 的区间 \([l,r]\),分裂成 \([l,pos-1]\)\([pos,r]\),并返回后一个区间的迭代器。

特别地,若 \(pos\) 所在的区间的左端点就是 \(pos\),那么不分裂直接返回这个区间。

auto split(int pos){auto it=odt.lower_bound(node(pos));if(it!=odt.end() && it->l==pos) return it; //特判it--;int l=it->l,r=it->r,val=it->val;odt.erase(it);odt.insert(node(l,pos-1,val)); //每个点维护的区间信息都是相同的return odt.insert(node(pos,r,val)).first;
}

平推(assgin)

如果只分裂那肯定是不行的,复杂度只会越来越高。

平推就是可以把一堆区间赋值成相同的,就可以合并起来。这也是 ODT 必须要有的平推操作,而且这也关乎到复杂度。

void assgin(int l,int r,int k){auto itr=split(r+1),itl=split(l);odt.erase(itl,itr);odt.insert(node(l,r,k));
}

所有的 ODT 的题必须要有的操作就这俩。

剩下的就全看实际题目了。

http://www.zskr.cn/news/15786.html

相关文章:

  • 01.linux基础
  • 详细介绍:Kubernetes实战:MariaDB误删恢复与数据持久化
  • 从模拟入侵到渗透测试:我摸清了黑客的套路,也懂了企业的软肋 - 详解
  • 集合幂级数,FMT 与 FWT 学习笔记
  • 上传文件前端需要注意的三个点:
  • Jenkins安装与配备
  • 适合新手的PPT模板网站,简单操作但效果好!
  • 无人机常用的几种飞行模式
  • springCloudMaven打包配置 - br
  • 题解:P5504 [JSOI2011] 柠檬
  • 太简单了!原来PS在线抠图可以这么玩,背景分离无压力
  • 深入解析:【Leetcode】随笔
  • DateStyle日期时间字符串序列化 - br
  • 十月四日就听《10월 4일》
  • 赋能制造新质生产力:制造业专用低代码平台选型指南(2025) - 详解
  • 4-7〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸文件上传漏洞-B - 实践
  • 完整教程:六款智能证照工具盘点,打造个性化“数字身份档案”
  • 深入解析:音频降噪技术:从原理到工具的完整指南(scipy librosa noisereduce soundfile pedalboard)
  • zkSync Era在ETHDenver的技术盛宴:zkEVM与Layer2创新实践
  • 11_linux镜像下载
  • 10_windows11安装virtualbox
  • OpenEuler 25.03 installed UKUI but cant run msedge and chrome
  • 网络调整config.xml的android.mk解析
  • 【Rive】rive-android源码分析
  • 完整教程:基于Spring Boot的爱琴海购物公园网上商城系统的设计与实现
  • 6_什么是知识图谱
  • 面向对象编程(OOP)的三大特性之一(封装、继承、多态)就是第八章聚焦于C++的多态(Polymorphism),这
  • The Brain in Your Toes: Can Tiny Foot Movements Boost BDNF and Sharpen the Mind? - 教程
  • 详细介绍:OpenAI近日推出了一项名为 ChatGPT Pulse 的全新功能
  • 微服务网关深度设计:从Spring Cloud Gateway到Envoy,流量治理与安全认证实战指南 - 指南