Treap(O(logn)):Treap主要是实现名次树、平衡树。名次树支持两个操作:找出第k小的元素(元素从小到大排序的第k个)、找到值x的名次。离线求区间第k大数(区间不能有包含)以及一些变形的区间第k大。(由于模板几乎都是指针的,就没写代码)
SplayTree(O(logn)):Splay这颗二叉树的中序遍历就是原序列。代码目前掌握不熟练,有待练习提高。例题:
六种操作。
BFS(34篇已看完):1、 设计(有效)状态:当前状态、后继状态、相同状态去重(记忆化)。2、记录同类状态最优值(比如最小时间)。3、状态剪枝。去除重复状态,用数组、状压或者hash(保存所有已出现的非重复状态)。4、查找目标状态,找到直接退出(当前状态已经是最优)。通常麻烦的就是寻找下一个状态并且判断是否为有效状态。(发现有时候记录路径用数组模拟队列更直观一些)
BFS(24篇已看完):和bfs类似。但是针对具体题目而言最重要的还是学会剪枝(做过很多题目之后,多多少少掌握一些技巧了),避免重复计算和无效计算,还要注意回溯的时候解除标记。
明天继续快速将之前看过的简单图论部分再看一遍,然后复习一下二分图最大匹配和网络流。