传送门
线段树好题。
维护区间取两种最值,区间加,求区间两种历史最值,区间最小值。
自己的写法调了一个晚上+一个上午+一个下午+一个晚上并没有调出来, 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>