珂朵莉树(老司机树,ODT,颜色段均摊)

浅谈珂朵莉树 珂朵莉树,超详细! 阅读详情

前言

在宿舍里有人说珂朵莉树写起来比shi山线段树方便多了。

正文

珂朵莉树,又名老司机树,颜色段均摊,ODT。
可以在数据完全随机化的情况下较快的完成一些操作(所以容易被卡)。
珂朵莉树其实形态并不像树,基于set或是链表,是一种很暴力的数据结构。


先来看一到例题(珂朵莉树起源题)
CF896C
题目大意:
有一个序列,你需要编写程序支持以下操作:
1 l r x :将[l,r]区间所有数加上x
2 l r x :将[l,r]区间所有数改成x
3 l r x :输出将[l,r] 区间从小到大排序后的第x个数是的多少
4 l r x y :输出[l,r] 区间每个数字的x次方的和模y的值
天哪线段树直接报废
进入正题:
珂朵莉树的每个节点由一个三元组组成 \((l,r,val)\) 表示从 \(l \sim r\) 这段区间中的值都是 \(val\)。
例如:
\(1,1,3,3,3,3,2,2,2,1,1,1\),构造时长这样:
\((1,2,1),(3,6,3),(7,9,2),(10,12,1)\)
珂朵莉树中的点按 \(l\) 排序。
操作1:
例如我想让 \(2 \sim 11\) 中的数 \(+1\)
但是:这并不是几个整个节点,所以我们需要拆点。

核心:区间分割

现在我们可以将 \((1,2,1)\) 变为 \((1,1,1)\) 和 \((2,2,1)\),将 \((10,12,1)\) 变为 \((10,11,1)\) 和 \((12,12,1)\)。
接着我们就可以将 \((2,2,1),(3,6,3),(7,9,2),(10,11,1)\) 中的 \(val\) 都 \(+1\)
所以我们将 split(x) 定义为找到 \(x\) 所在的区间 \((l,r,val)\) 将其分为 \((l,x-1,val)\) 和 \((x,r,val)\) 并返回 \((x,r,val)\) 的迭代器。

代码:

点击查看代码
/* by 01130.hk - online tools website : 01130.hk/zh/requestmethod.html */
struct node{
	int l,r;
	mutable int v;//mutalbe  可变,可以修改此值,一定要加,不然无法修改v
	bool operator < (const node&W)const
	{
		return l<W.l;
	}
};
set<node> tree;
auto split(int x)
{
	auto it=tree.lower_bound({x,0,0});
	if(it!=tree.end()&&it->l == x)
	{
		return it;
	}
	it--;
	int l=it->l,r=it->r,v=it->v;
	tree.erase(it);
	tree.insert({l,x-1,v});
	return tree.insert({x,r,v}).first;
}

核心:区间推平

这个很好办,直接看代码:

点击查看代码
/* by 01130.hk - online tools website : 01130.hk/zh/requestmethod.html */
void assign(int l,int r,int v)
{
	auto itr=split(r+1),itl=split(l);
	tree.erase(itl,itr);//erase 左闭又开
	tree.insert({l,r,v});
}

注意:

一定要先进行split(r+1)在进行split(l) 否则会RE
例如 \((1,4,1),l=1,r=2\)
若先进行split(l):
itl=(1,4,1)的迭代器
split(r+1)
此时 \((1,4,1)\) 会被分裂成 \((1,2,1)\) 和 \((3,4,1)\)
此时的 \((1,4,1)\) 已经被删掉了,所以 \(itl\) 就是一个野指针,遍历时会出问题。

add操作

解决了问题,add操作就很好写。

点击查看代码
void add(int l,int r,int v)
{
  auto itr=split(r+1),itl=split(l+1);
  for(auto it=itl;it!=itr;it++)
  {
    it->v+=v;
  }
}

别的也是类似于这样。

珂朵莉树的总代码(核心部分)

点击查看代码
struct node{
	int l,r;
	mutable int v;//mutalbe  可变,可以修改此值
	bool operator < (const node&W)const
	{
		return l<W.l;
	}
};
set<node> tree;
auto split(int x)
{
	auto it=tree.lower_bound({x,0,0});
	if(it!=tree.end()&&it->l == x)
	{
		return it;
	}
	it--;
	int l=it->l,r=it->r,v=it->v;
	tree.erase(it);
	tree.insert({l,x-1,v});
	return tree.insert({x,r,v}).first;
}
void assign(int l,int r,int v)
{
	auto itr=split(r+1),itl=split(l);
	tree.erase(itl,itr);
	tree.insert({l,r,v});
}
void build(int l,int r,int *a)
{
	tree.clear();
	int pos=l;
	for(int i=l+1;i<=r;i++)
	{
		if(a[pos]!=a[i])
		{
			tree.insert({pos,i-1,a[pos]});
			pos=i;
		}
	}
	tree.insert({pos,r,a[pos]});
}

变种

珂朵莉树其实也可以建立在值域上(类似于权值线段树)
此时的node变为:
\((val,cnt)\) 表示 \(val\) 出现了 \(cnt\) 次,按 \(val\) 排序。
剩余操作和上面差不多。

作者: ltl0825
出处:https://www.cnblogs.com/LTL0825/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
2026.06.23+逻辑填空3+郭熙(笔记)(郭熙言语高分“十二计”).pdf 立即下载

相关推荐

AltiumDesigner.zip

AltiumDesigner.zip

珂朵莉树/颜色段均摊

简洁明了地介绍了珂朵莉树算法,可以高效解决区间问题。

OIer_wst的博客 2183

YOLO26算法日历数字识别+训练好的模型+102张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[数字(number)] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 97 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9156** mAP50-95 | 0.7374 Precision | 0.8626 Recall | 0.8381 train/box_loss | 0.8790 train/cls_loss | 0.7499 val/box_loss | 0.7874 val/cls_loss | 0.6025 【训练过程分析】 训练开始后,我注意到前几轮的 loss 下降特别快,这让我有点兴奋,但随着训练的深入,loss 的降幅变得不那么明显了。在训练的第 30 轮左右,val_loss 开始趋于平稳,这让我稍微放心了一些,但同时也感觉压力倍增,因为一旦训练过早平稳,就容易陷入过拟合的泥沼。经过 97 轮的磨炼,最终 mAP50 达到了 0.9156,这让我松了一口气。不过,mAP50-95 仅有 0.7374,和 mAP50 之间有明显的差距,说明模型在低置信度的检测上还需要优化。从 loss 曲线来看,训练过程总体上比较平稳,没有明显的过拟合迹象,但也让人觉得有些枯燥。我心想,要是能早点找到一个陡峭上升的训练曲线该有多好,这样至少能让人心态更积极一些。 随着训练进行到后半段,模型开始逐渐收敛,但这个过程并不是一帆风顺的。在训... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

珂朵莉树(ODT)/颜色段均摊

珂朵莉树是一种数据结构,可以用来做序列上的区间赋值,或者说区间推平,同时维护区间查询。先来看操作实现,复杂度分析后面细说注意到我们可以把值相同的元素合并成一个区间,那么整个序列,就是一个一堆区间组成的集合,这些区间填满了1n,并且每个区间内的元素值相同,这里可习惯于把这个值叫做颜色。那么维护一堆区间,一个经典trik就是set。用一个存,每次推平,就找到起点终点所在的区间,把他们中间的区间都删掉,然后插入一个新区间这样会有一些边界问题,就是lr。

Maxwell_Newton的博客 1185

【无人机自动降落】基于标记定位与下降速度约束的MATLAB仿真:感知-规划-控制闭环系统设计 MATLAB 无人机自动降落仿真|标记定位与下降速度约束

内容概要:本文档详细介绍了基于MATLAB R2025b的无人机自动降落仿真系统,涵盖从环境建模、标记定位、最优路线规划到下降速度约束控制的全流程。系统通过构建包含障碍物、风险和视觉质量的栅格地图,采用代价加权A*算法实现多因素综合评估的最优路径规划,并结合标记识别置信度、水平误差和环境风险动态调整下降速度,确保降落过程的安全性与稳定性。项目还设计了完整的闭环控制架构、状态机逻辑和可量化的仿真验证体系,支持GUI交互界面与多场景测试,适用于城市物流、电力巡检、应急救援等多种应用场景。 适合人群:具备MATLAB编程基础,从事无人机控制、自动驾驶或智能系统开发的科研人员与工程师。 使用场景及目标:①研究复杂环境下无人机自动降落的感知-规划-控制一体化方案;②验证基于视觉标记的定位可靠性与下降速度自适应控制策略;③开展多因素路径规划算法(如改进A*)的仿真实验与性能评估。 阅读建议:建议结合提供的完整代码与GUI界面进行交互式仿真,重点关注状态机切换逻辑、控制约束机制与各模块间的数据流关系,并通过调整参数观察系统在不同风险、遮挡和噪声条件下的响应特性,以深入理解自动降落系统的鲁棒性设计。

风储VSG-基于虚拟同步发电机的风储并网系统Simulink仿真

内容概要:本文介绍了“Plecs全桥LLC谐振变换器仿真模型”这一技术资源,聚焦于隔离型全桥LLC谐振变换器的建模、仿真与参数设计,涵盖其在电力电子系统中的关键应用,如软启动、闭环控制、变频控制及效率优化等。该模型支持对LLC变换器在不同工作模式下的动态响应与性能表现进行深入研究,适用于探究谐振拓扑结构、磁性元件设计、谐振参数匹配以及先进控制策略的科研与工程实践。同时,文档配套提供了仿真模型、设计报告与计算书等完整资料,强化了其实用性与教学价值。; 适合人群:具备电力电子、自动化或电气工程等相关专业背景,从事电力电子变换器研发、系统仿真与控制算法设计的科研人员、工程师及研究生。; 使用场景及目标:①用于全桥LLC谐振变换器的建模、仿真与动态性能分析;②支持对软启动过程、闭环稳压控制、变频调谐及效率优化等核心技术的研究与教学;③为电力电子电源系统的工程设计、参数优化与控制策略验证提供高精度仿真平台。; 阅读建议:建议结合Plecs或Simulink等仿真工具进行动手实践,重点理解电路拓扑构建、谐振参数计算、控制器设计与系统稳定性分析,并配合文档中的设计报告与计算书,系统掌握从理论到仿真的完整流程。

P9221 「TAOI-1」Pentiment(珂朵莉树,颜色段均摊,ODT)

P9221 「TAOI-1」Pentiment(珂朵莉树,颜色段均摊,ODT)

qq_45809243的博客 1071

国央企创新负责人如何通过平台实现科技创新资源的系统集成与高效配置?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

【线性数据结构】颜色段均摊(珂朵莉树 ODT)

珂朵莉树利用区间赋值次数少的特性,将序列划分为连续同值段,通过分裂与合并操作,均摊处理复杂区间查询,适用于非线性操作。

zhangmohan123321的博客 1156

独立储能的现货电能量与调频辅助服务市场出清协调机制(Matlab代码实现)

内容概要:本文介绍了“Plecs全桥LLC谐振变换器仿真模型”这一技术资源,聚焦于全桥LLC谐振变换器在电力电子系统中的建模与仿真研究。该资源提供了基于Plecs平台的高精度仿真模型,完整呈现了变换器的主电路拓扑、谐振参数设计、软开关实现机制及变频控制策略,能够有效支持对系统效率、动态响应与稳态性能的深入分析。模型充分体现了LLC谐振变换器在实现零电压开关(ZVS)、降低开关损耗和提升能量转换效率方面的优势,适用于新能源发电、储能系统及高效率电源设计等应用场景。; 适合人群:具备电力电子、自动控制及电路理论基础知识,从事电力电子变换器设计、新能源系统开发或相关领域研究的研究生、高校教师及工程技术人员。; 使用场景及目标:①用于全桥LLC谐振变换器的工作原理教学与参数设计实践;②支撑软开关特性、变频控制策略、效率优化等关键技术的仿真验证与性能评估;③作为科研项目、课程设计或毕业设计中电力电子系统仿真的核心参考模型,促进理论与工程实践的结合。; 阅读建议:建议使用者在掌握LLC谐振变换器基本工作原理的基础上,结合相关电力电子教材与Plecs软件操作指南,通过调整谐振元件参数、负载条件及控制策略进行多工况仿真,深入理解其工作机理与优化方法,并结合实验数据对比验证仿真结果的准确性。

LLC谐振变换器开环+闭环软启动仿真设计(Simulink仿真实现)

内容概要:本文围绕LLC谐振变换器的开环与闭环软启动过程展开系统性仿真研究,重点基于Simulink平台构建隔离型全桥LLC谐振变换器的完整仿真模型,涵盖其工作原理分析、关键参数设计、变频与移相混合控制策略实现、软启动过程建模及动态响应优化。内容深入探讨了开环启动中存在的冲击电流问题,对比闭环控制在抑制浪涌、提升系统稳定性与效率方面的优势,并通过仿真验证软启动过程中电压、电流的平滑过渡特性,帮助读者掌握高频高效DC-DC变换器的设计要点与仿真调试方法。; 适合人群:具备电力电子技术、自动控制理论及电路分析基础,从事开关电源、新能源变换系统、电力传动等领域研究的研究生、工程师及科研人员;熟悉Simulink仿真环境者更佳。; 使用场景及目标:①掌握LLC谐振变换器主电路建模与谐振参数设计方法;②理解开环与闭环控制对软启动性能的影响机制;③实现软启动过程中冲击电流的有效抑制与系统平稳启动的仿真验证;④为高效率电源系统的工程化设计与优化提供可靠的仿真依据和技术支撑。; 阅读建议:建议结合文中提供的仿真模型、参数计算书及参考文献进行同步实践,亲手搭建Simulink模型,逐步调整控制参数并观察动态响应,深入理解LLC谐振变换器在不同工况下的运行特性与控制逻辑,切实提升理论分析与工程仿真相结合的能力。

珂朵莉树 ODT

容器后,其指代的值仍能访问到 (指针访问) ,但不能再进行任何与 原。的思想维护连续段,再用其它数据结构维护查询操作,以实现正解的复杂度。与该段相交的,由于这样的区间最多只有两个,每次推平最多删两段。上面 三种情况的讨论一种也不能少!否则 RE 套餐送上。意为 “可变的”,方便我们在遍历迭代器时可以直接。所以均摊复杂度正确,不依赖于数据随机生成。完全被包含的,删掉就没了,而总段数是。为什么说它是一个暴力数据结构,观察。正因为是暴力,所以能做的操作十分多。,这是因为如果反过来,操作时,复杂度是严格。

qq_56326461的博客 1024

test111233333333333333

test111233333333333333

珂朵莉树

概念 珂朵莉树(ODT),适用于有区间赋值操作且数据随机的题目。 珂朵莉树是一种“基于数据随机的颜色段均摊”,通过 set 维护区间。 其复杂度依赖于 assign 操作。 因此,题目中必须含有区间赋值。 同时,珂朵莉树依赖于数据随机。 在随机数据下, 使用 set 实现的珂朵莉树可以达到 O(nlog⁡log⁡n)\mathcal O(n\log \log n)O(nloglogn) 的复杂度(参见 这篇文章)。 思想 珂朵莉树的思想在于随机数据下的区间赋值操作很可能让大量元素变为同一个数。所以我们以三元

orz 1237

单相boost功率因数校正 PFC电路仿真(Simulink仿真实现)

内容概要:本文档详细介绍了一套关于单相boost功率因数校正(PFC)电路的Simulink仿真资源,涵盖完整的仿真模型、设计报告及关键参数计算资料。该资源聚焦于电力电子领域中的PFC技术,利用Simulink平台对单相boost PFC电路进行精确建模与闭环控制系统仿真,重点展示其工作原理、主流控制策略(如平均电流控制、PI双闭环前馈控制等)以及动态响应特性的分析方法。文档还列举了多种先进电力电子拓扑结构与控制技术,包括LLC谐振变换器、图腾柱PFC、三相Vienna整流器等,充分体现了PFC技术在高效电能转换系统中的广泛应用前景与研究价值。; 适合人群:适用于电气工程、自动化、电力电子及相关专业的高校本科生、研究生、科研人员以及从事电源系统设计与开发的工程技术人员。; 使用场景及目标:① 掌握单相boost PFC电路的基本拓扑结构与Simulink建模流程;② 深入理解并实践电压-电流双闭环、前馈补偿等典型控制策略的设计与参数整定;③ 对比分析不同PFC架构(如传统boost、图腾柱、交错并联)的性能差异与应用场景;④ 为学术研究、课程设计或实际工程项目提供可靠的仿真依据与技术参考。; 阅读建议:建议结合所提供的仿真模型与设计文档同步操作,通过动手实践加深对控制逻辑与系统动态行为的理解;可进一步参考文档中提及的其他相关拓扑(如LLC、Vienna等)进行横向对比学习,拓展系统级设计视野,提升综合仿真与创新能力。

Keil-C51 与 Keil -ARM 共存的方法

本篇为《嵌入式相关》系列博客的第五篇,该系列博客主要记录单片机开发及硬件设计的相关过程,方便以后查阅。 Keil-C51 与 Keil -ARM 共存的方法状况解决方案1测试解决方案2 状况 今天装完Keil-C51,然后又换装了Keil-ARM之后,可以正常编译STM32 的工程,但是无法编译C51的工程,并且出现了如下错误: *** Error: Project ‘template’ requires ‘C51’ Toolchain which is not installe 这种情况就是Keil-

梁小憨憨的博客 1万+

Ezzat and Grid(珂朵莉树优化DP,颜色段均摊)

Codeforces Round 737 (Div. 2) Ezzat and Grid(珂朵莉树优化DP,颜色段均摊)

qq_45809243的博客 1043

【AI深究】合成数据(Synthetic Data)深度解析:原理、算法与工程实践——全网最详细流程|核心原理、主流方法、数学表达、工程实践与细节、未来趋势|GAN、VAE、语言模型LLM合成如GPT

大家好,我是爱酱。本篇延续将会系统梳理合成数据(Synthetic Data)的核心原理、主流方法、数学表达、工程实践与未来趋势,结合数学公式,帮助你全面理解这一AI建模的关键技术。 注:本文章含大量数学算式、详细例子说明及大量代码演示,大量干货,建议先收藏再慢慢观看理解。新频道发展不易,你们的每个赞、收藏跟转发都是我继续分享的动力!

AI人工智能爱酱~你的AI学习好帮手~ 4931

gym 102059A 树链剖分后odt维护区间

题意 一棵树 多次修改,每次修改一个点到根的所有边的颜色,并询问现在有哪些颜色染了恰好$m$条边 题解: 稍加思考可以知道,从某个点到根节点的颜色数,均摊复杂度很低,因此,可以考虑珂朵莉树维护重链剖分 这里也记录一下珂朵莉树的代码 代码: #include<bits/stdc++.h> #define endl '\n' #define ll long long ...

weixin_30873847的博客 185

模电专题-MOS管的放大电路分析

在实际应用中,我们经常会使用到功率MOS,这时通常不会将它当成一个开关使用,而是当成一个放大器来使用,那这就需要让其工作在放大状态。参考下图中的mos管的特性曲线,右图中的输出特性曲线中有一根红色的分界线,这个线就是区分mos管工作状态的分界线,在红线的左边,mos管工作在可变电阻区,也就是线性区;在红线的右边mos管工作在恒流区,也就是饱和区。当然,还有一个截止区。本文分析主要运用模电课本中的理论计算验证。

Anitawen的博客 2万+

研究生课程笔记:软件包在流行病学中的应用(三)——STATA软件

关键词:STATA软件基本操作、STATA对于流行病学研究的实现、STATA对复杂抽样设计样本量计算的实现 一、STATA软件基本操作 这部分网上教程有很多,也可以直接根据stata自带的help功能进行自学,在此只记录课程中提及的功能项。 1. 变量编辑 1.1 赋值:label type(按精度区分) 1) 整型:int(32), short(16), long(32) 2) 实型:flo...

weixin_45463530的博客 2432

洛谷算法标签大全

摘要 本文是洛谷算法标签大全(2026年2月第1版),系统整理了编程竞赛中常见的算法和数据结构分类。内容涵盖语言基础、字符串处理、动态规划、搜索算法、数学理论、图论、计算几何、树形/线性数据结构、博弈论、多项式运算、数论等核心领域。每个分类下详细列出相关算法标签,如动态规划包括背包DP、树形DP等;图论包含网络流、最短路等;数学部分涉及数论、线性代数等高级内容。该大全可作为算法学习的系统性参考,帮助选手快速定位各类算法知识点。

(-)优快云博客:HAH_000000(-)优快云昵称:HAH-HAH(-)通用名称:ZZA000HAH(-)永久国籍:中国 CHN(-)未来企业:中政集团 ZHOENG 762

VS Code+ESP-IDF开发避坑指南:头文件标红报错的5种解决方法(附CMakeLists.txt配置)

本文详细解析了在VS Code中使用ESP-IDF开发ESP32时头文件标红报错的5种解决方法,包括环境配置检查、CMakeLists.txt规范配置、路径解析策略、缓存清理技巧和高级调试手段。特别提供了CMakeLists.txt的实战配置示例,帮助开发者彻底解决头文件路径问题,提升开发效率。

weixin_33670786的博客 560
上一篇: Python中变量之间赋值的理解
下一篇: 基于C#&#x2B;avalonia ui实现的点胶机给传感器灌胶操作的上位机控制软件,使用RS485 Modbus通讯,跨平台可运行在Linux系统及windows系统
cmdos
博客等级 码龄19年 83粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值