随笔分类 - 数据结构
摘要:我们先把跳表入个门。 我们发现很多时候我们能不写平衡树就不写,像有的巨神喜欢用线段树一样(但是线段树的常数我们就不多说了),那我们就也整一点比较怪的东西。我们考虑用链表维护一些平衡树的信息。 最近学了链表之后发现这个东西就是个神,支持很多常数小的操作甚至直接配合其他算法整出各种优越于其他做法的复杂度
阅读全文
摘要:可持久化就是支持维护不同时间下的版本的数据结构啦。 那么可持久化线段树能干什么很显然了。 可持久化线段树又叫主席树,因为来历大家都知道就不多说了。 那么就直接讲核心操作了,就是克隆节点。 克隆节点 就是在修改的时候(或者维护多棵有公共节点的线段树时)使用。把有变化的节点新建,由于每次如果进行单点修改
阅读全文
摘要:完全顶替map const int S=10000019; struct HashMap{ std::vector<int>head,nxt; struct node{ int x,v; };std::vector<node>to; inline void clear(){ head.resize(
阅读全文
摘要:对于每一个集合维护点与根的权值。 如果对权值取模,可以得到种类并查集,相当于同时维护数与数之间的多种关系,如包含与不包含。 典型例题:P2024 [NOI2001] 食物链 两种实现方式:(以 P2024食物链 为例) 1.维护点到根的关系值,通过权值判断两点是否在同一集合。 实现如下: #incl
阅读全文
摘要:一般用于连通块查询 加入size数组可以做到查询连通块大小 #include<bits/stdc++.h> using namespace std; int fa[100010],n,m; inline int find(int x) { return fa[x]==x?x:fa[x]=find(f
阅读全文