自学树状数组+ST算法的一天

上午去科学楼听课,巨佬lzh讲解并查集的优化,LCS还有树状数组(简单略过),发现进度这么快蒟蒻跟不上啊,还不如自学来得好,能有目的地去补全自己遗漏的知识点,自学大法好

1、 树状数组 (单点查询,单点修改,区间查询,区间修改)
发现昨天学的树状数组逻辑有点混乱,中午问了坐在机房讲台的老师,发现我对tree[]的理解有点错误,tree[]存的是a[]的区间和,而不是前缀和(难怪我昨天写模板的时候脑子里一片混乱),弄清楚之后在洛谷刷了两道模板题:
-T1:【模板】树状数组 1
简单地套入函数就行

-T2:【模板】树状数组 2
这里的tree[]与上一题的tree[]有点不同,这里用到了差分的思想,所以在初始化tree[]的时候要加一点改动

学了新的知识点后要记得及时复习,不然下一次想到这个知识点的时候脑子里一片空白(什么东西,这个好像学过,咦~不记得了,再学一遍),重现真香现场

2、ST算法(解决RMQ问题,静态求一个区间的最值)
很多时候RMQ类型的题用单调队列、线段树也可以做,不过ST算法比线段树来得更简单、更迅速,代码更简洁,只是在运用范围没有线段树这么广

RMQ模板题:

T1:质量检测(求区间最小值)

学了这两个东西后去洛谷刷题练习,按题目难度从小到大来做,然鹅…有的题目太简单了以至于不用树状数组和RMQ就能做出来!追求快速(懒)的我直接做了一个下午的水题hhh

不过还是有收获的,在做题过程中,发现了STL中的二分查找函数lower_bound()和upper_bound()!天啦噜这个STL真的是太方便了!之前老师讲过的最长不下降子序列和最长上升子序列都可以用这个函数来减少代码量,不过前提是得弄懂二分查找才行啊,不能过度依赖STL

今日水题(模板题):

P1847 轰炸II

P1996 约瑟夫问题

P5019 铺设道路

P3902 递增

今天也是有收获的一天( )