数据结构笔记

  • Linux测空间

  • 1级邻域问题:维护儿子,并上父亲信息

  • trie维护全局+1:从低位往高位建01trie,+1交换0/1子树并递归做1子树

STL

  • list较好用
  • 注意deque的空间常数
  • pb_ds

基础数据结构

  • 栈,队列,链表
  • 单调栈,单调队列(可优化DP)

baka's trick

  • 描述:在需要前、后弹出并插入的线性数据结构维护容易加入但不容易删除的值,做到\(O(加入和删除次数)\)

  • 把这个序列分成大小相同的两个栈,一个开口朝前、另一个开口朝后。在加入数据时,同时维护我们要维护的值(从栈底到当前位置的区间值)

  • 如果有一个栈删空了,则把另一个栈再次分成两部分,并暴力重构维护的值

    由于每次重构只会在做了\(O(栈的大小)\)次删除操作后才会重构,并且重构的代价是\(O(栈的大小)\),所以可以做到预期复杂度

并查集

  • 普通并查集,扩展域并查集,带权并查集

ST表(求解RMQ问题)

  • 全名Sparse Table,稀疏表

  • ST表用于处理可重复贡献问题

dfs序求LCA

  • 先求dfs序(dfn数组),并维护rnk(用dfs序查节点)和fa(父亲)
  • 两个点的LCA是两个点之间dfs序最小的节点的父亲

线段树

树上主席树

  • 一般的主席树是序列上、从前一个位置建立新版本,

    树上主席树是从父亲的版本建立新版本

posted @ 2025-07-16 20:43  mike_666  阅读(18)  评论(0)    收藏  举报