20170704总结
今天是数据结构的第二天。上午考试,题目难度适中。T1考读题,较水。T2是线段树的奇葩用法,和普通用法不同,它是只递归单区间,另一区间则转化计算。T3是昨天讲过的题,线段树套单调队列,因为代码较为复杂,没能调出来。综上可知,线段树一些较难的题都是不具有合并性质的线段树或有限制(后效性)的线段树,一般只能得出左右两区间中其中一个区间的算法,另一区间则不断递归完成。两个区间有一个区间根本不去算,而是递归,这样让我感觉有些虚,经常想不清楚,应多加练习。
下午先讲了dfs序列,这类题一般可以用树剖来做(前天第一次写,一直没调出来/(ㄒoㄒ)/~~),其中较难的是括号序列,尽管听懂了,但题目变化很多,需要练一练题。接着讲了几种并查集进阶,即带权并查集、可撤销并查集(貌似漏了种类并查集),这部分题目不难,只是实现的时候要注意细节,以防被卡常数。然后讲了分块,这种玄学的暴力优化在很多时候都有用,因为出题人预测不到,而且好写好调,性价比高,是个好东西。最后是传说中的莫队算法。这种算法号称“可以解决一切RMQ”,只是有时候容易卡常数,因而需要多加练习,用最好的写法。今天的题目比较难,得多消化消化。