2018.07.29~30 uoj#170. Picks loves segment tree VIII(线段树)

这篇博客介绍了如何使用线段树解决区间两种最值、区间加法以及区间历史最值的问题。作者在尝试自己实现失败后,学习了一种新的封装方法,通过使用结构体表示区间最大值、最小值,并重载运算符。文章指出区间标记的维护是关键,特别是要区分最大值、最小值和两者都不是的情况。作者分享了相关题目以供练习和理解。
摘要由CSDN通过智能技术生成

传送门
线段树好题。
维护区间取两种最值,区间加,求区间两种历史最值,区间最小值。
自己的写法调了一个晚上+一个上午+一个下午+一个晚上并没有调出来, 90 90 分弃疗。
于是我开始学习新的写法。
也就是封装再封装。
然后发现自己的方法的确有不严谨的地方,但并不好改,于是写了一个凌晨参考了 xuyixuan x u y i x u a n 神犇的写法调过了这题。
实际上就是我们对区间标记,区间最大值,区间最小值分别用三类结构体表示(顺便来个重载运算符)。然后就到了本蒟蒻出锅的地方:区间标记需要维护三类数的(我只维护了两类),最大值的,最小值的,既不是最大值也不是最小值的(这一项我并没有维护然后 gg g g ),然后分个类什么的再结合下面几道经典线段树应该就能做出来这道题了。

uoj#169. 【UR #11】元旦老人与数列
uoj#164. 【清华集训2015】V
bzoj3064: Tyvj 1518 CPU监控
bzoj4695: 最假女选手
hdu5306Gorgeous Sequence
代码:

#include<bits/stdc++.h>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值