2019年2月14日训练日记

本文详细解析了线段树与树状数组的基本原理及应用,涵盖区间更新、查询最值、求和等问题,同时介绍了如何通过二分搜索优化复杂查询,以及在树上操作的转化技巧。强调了线段树在降低查询和修改时间复杂度至O(logn)的优势,以及树状数组的简洁性和适用场景。

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

线段树/树状数组小结:

1、基本问题:区间更新(加、变、取反等)区间查询最值、和(可以加一些限制条件,这是树状数组做不了的),最长连续序列长度。看见多少张海报、所有海报的总面积、周长等。在只有一次查询的情况下,可以考虑前缀和。

2、基本变式:对某些求和更新操作增加条件,或者查询一些有限制的东西。可能用到二分。这个时候思维就要灵活一些,对线段树的更新、查询等操作做适当的修改。难一点可以结合许多其他的知识点。

3、树上对一颗子树的操作可用dfs序给节点编号。然后化为区间操作。

4、线段树通常是一种优化的工具,用来将O(n)的查询/修改均降低为O(logn),虽然代码量较大,但是很好用。树状数组代码量少,但是解决的问题十分有限,如果能用树状数组最好用树状数组。(简单且不容易写错)。

5、利用好题目所给条件,活跃思维,构造适当的标记方法。注意修改的条件(很多时候决定着你是否会T),pushup、pushdown的地方。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值