这一周做了好几个线段树和树状数组的题。
线段树方面做了两个DP+线段树的,有一个延迟单点更新的,用一个数组实现的。然后还有一个区间合并的题,就有一个细节问题就是在更新的时候注意最大连续值和左右两边的最大连续值。还有一个区间查询最大值的,还有一个离散化+区间更新的,原来做过,这个比较顺手,但是我用sort的时候忘了地址+1,卡了好久。
对于这段时间训练的线段树我感觉有些难度,好多东西都是没有想到,而且不是单一的模板,好多是结合DP。
树状数组做得十分不好,感觉实在是太难了,感觉都想不到,有一个竟然是三维的树状数组,而且十分的不明显,我看题解,也是看了好久才懂,还有一个线段树+离线查询的,一般要对查询的区域进行排序然后才更新。我没有用线段树+离线查询,而是用的莫队模板。还有一个离线处理的,求某个区间的任意两个数的最大公约数的最大值。这个题特别巧妙,首先公约数都要找出来,然后依次去更新,不过,却是根据右端点更新前面,用做端点查询后面。还有就是处理两次出现的问题,用数组存放,然后延迟更新。
这几次做的树状数组区间处理的一般都要离线处理,有处理出现几次的一般都需要用数组存放,然后延迟更新。
这两天做的题有点多,有点消化不了,要放慢做题速度了,加深理解了。