hdu 1698 Just a Hook

本文介绍了一种名为线段树的数据结构及其实现方法。通过实例详细解释了线段树的节点定义、更新及查询操作,并提供了完整的C++代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初学线段树,参考了别人的做法,这里记录一下自己理解,线段树是一种思想,没有具体的模板

 

在这里,线段树每个节点有三个成员:{ml,mr,mcolor}分别表示 区间的头尾跟覆盖的颜色,

mcolor为0时,表示[ml,mr]这个区间内覆盖的颜色不一样

mcolor不为0时,表示[ml,mr]这个区间内覆盖的颜色一样

[s t]为要操作的线段

 

更新时:

当[s t]恰好落在区间上,就让这个区间的mcolor为我们指定的color, 否则,区间的mcolor为0,这个区间的状态转移到处理它的两个孩子的状态

 

查询时:

当[s,t]访问到的区间mcolor刚好为0时,那么就直接返回当前区间的mcolor*(r-l+1),否则,访问它的子区间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值