随笔分类 -  数据结构

摘要:模板 void insert(ll *a,ll x){//插入新元素 for(int i=62;i>=0;i--){ if((x>>i)&1ll){ if(!a[i]){ a[i]=x; return; } else{ x^=a[i]; } } } } ll getMax(ll *a){//得到线性 阅读全文
posted @ 2020-08-15 16:27 UCPRER 阅读(142) 评论(0) 推荐(0)
摘要:```cpp //静态区间最值 #include using namespace std; const int maxn = 1e5 + 5; int ST[maxn][25]; int a[maxn]; void STinit(int n) { for (int i = 1; i > n >> m; for (int i = 1; i <= n; i++) { scanf("%d", &a[i] 阅读全文
posted @ 2020-02-07 21:35 UCPRER 阅读(137) 评论(0) 推荐(0)
摘要:Trie树:用于对字符串进行统计,排序和保存的一种数据结构。每个节点是一个字母(实际代表一个前缀),若这个节点是一个单词的终末,则其前缀构成的字符串就是这个单词。每个节点可以存放该前缀包含的单词个数,该节点是否是一个单词的终末位置。 用法 插入&前缀统计 插入时,每个访问过到的节点num[]++,不 阅读全文
posted @ 2019-11-26 20:01 UCPRER 阅读(114) 评论(0) 推荐(0)
摘要:主席树 可持续化线段树:在普通线段树的基础上,能询问/修改每个历史版本的线段树的信息(每次询问与修改都会产生一个新的版本)。 即每次更新都会产生一个新的树,由于是单点更新,因此只会有一条链发生改变,每次只要新加一条链即可,当然链上的节点一个儿子是旧的节点,一个儿子是新的节点。为了能够访问不同版本的线 阅读全文
posted @ 2019-08-17 14:29 UCPRER 阅读(235) 评论(0) 推荐(0)
摘要:树状数组 模板 例题 HH的项链 大小为N( include include include using namespace std; const int maxn=1e6+5; struct Q{ int l,r,id; }q[maxn]; bool cmp(Q a,Q b){ return a. 阅读全文
posted @ 2019-08-16 12:27 UCPRER 阅读(124) 评论(0) 推荐(0)
摘要:ZKW线段树 数组定义 const ll M=1<<19;//从1开始,不能修改0和M ll T[M+M]; 单点修改区间查询 void modify(int n,int v){ for(T[n+=M]=v,n>>=1;n;n>>=1) T[n]=T[n+n]+T[n+n+1]; } ll quer 阅读全文
posted @ 2019-07-31 14:05 UCPRER 阅读(223) 评论(0) 推荐(0)
摘要:单调队列 定义和性质 一个队列内部的元素具有单调性的一种数据结构,分为单调递增队列和单调递减队列。 单调递减队列队首元素为区间最大值,队尾元素为最近的大于新元素的元素下标。 单调递增序列维护区间最小值和最近的小于新元素的元素下标。 模板 常见用法 给定一个n个数的数列,从左至右输出每个长度为m的区间 阅读全文
posted @ 2019-07-27 14:33 UCPRER 阅读(234) 评论(0) 推荐(0)