本周主要学习内容:树状数组、线段树、ST表、石子合并问题。

树状数组

前半周主要学了树状数组,可以很熟练地把模版敲出来了。相关题目可以看leetcode315),以及当时写的小结:[leetcode]315. 计算右侧小于当前元素的个数 | Sprooc

线段树

接下来系统梳理了线段树,掌握了懒惰标记和动态开点的方法,参考文章:
线段树 从入门到进阶(超清晰,简单易懂)_线段树怎么写-CSDN博客
699. 掉落的方块 - 力扣(LeetCode)

Sparse Table

模版题目:P3865 【模板】ST 表 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

CSP真题

周六限时做了202203的CSP真题。前三题满分还是挺轻松的。第四题写了一个小时,暴力求“通信对”超时拿了50分。后来想改成实时维护“通信对”数量,但总该不对,大概有些细节问题,没有细究了。第五题一脸懵,直接放弃了。三个小时拿了350分。

fc1b9f4f1e7383b08328814347efeed

石子合并问题

做csp202203-5时了解到石子合并问题,找了些资料学了一学。参考资料:

石子合并问题(直线版) - jiu~ - 博客园 (cnblogs.com)
算法学习笔记(79): 四边形不等式优化DP - 知乎 (zhihu.com)

力扣第374次周赛

两题遗憾收场,总排名意外的不算太低,感觉这次周赛确实上难度了。

1635377acebfff7866915f1586771c1

0b495cd39acc31a7289b0558514d06a

第一题送分题。第二题需要自己模拟一下,思路比较难找,但终究还是写出来了。第三题思路本来是对的,先找到满足条件2的子串,再对每个子串求满足条件1的子串数量。求满足条件1的子串用滑动窗口,窗口大小为k的整数倍。当时我按照这种思路写结果超时了,以为有更优的解法。看了别人的代码才发现,不应该将字符串总长度作为窗口大小的上界,窗口最大只能是26k,因为只有26个字母,如果一个字符串满足条件,它的长度最大也只能是每个字母都出现k次,总长度就是26k。只改了一行代码结果结果了。又是细节上出了问题,看来还是经验不足。第四题实则是一道数学题。比赛时来不及做,之后看题解发现思路还是不困难的。但是发现一些原来不知道的数论知识,顺便补了一课:逆元(关于除法取模)_除法逆元-CSDN博客

总体来看,这周的收获还是挺大的(也更加感到自己与佬的差距)。目前的问题主要是经验不足和知识体系有很多缺漏。接下来还是要多刷题多总结。当然也要多啃书。另外刚买了一本李煜东的算法竞赛进阶指南,用来给自己补一补洞吧。

这周大概就是这样了。不知不觉就到了今年的最后一个月了,发现很快2023年就要结束了。感觉时间总是在不知不觉中溜走了,有一种被时间推着走的感觉。还没有做好迎接新一年的准备,就恍恍惚惚地被逼着迈入下一年。无论如何,没准备好也好,也只能硬着头皮走下去了。那么,为了让今年少一点遗憾,最后一个月,加油干吧!