数据结构
护理系程序猿
这个作者很懒,什么都没留下…
展开
-
树链剖分板子
【代码】树链剖分板子。原创 2022-09-23 01:14:42 · 96 阅读 · 1 评论 -
平衡树Splay
【代码】平衡树Splay。原创 2022-09-22 11:13:37 · 83 阅读 · 0 评论 -
主席树(可持久化权值线段树)
【代码】主席树(可持久化权值线段树)原创 2022-09-21 22:28:31 · 84 阅读 · 0 评论 -
扫描线算法
扫描线=离散化+线段树 应用 1.面积 2.周长 思路参考 3.代码 #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #define mid ((l+r) >> 1) #define lson (num << 1) #define rson ((num)<<1 | 1) #define LL long long using n原创 2022-03-16 15:28:59 · 604 阅读 · 0 评论 -
线段树基础
线段树关键:代码:区间加法,区间求和代码:区间加法、乘法,区间求和 关键: 数组空间4:二叉树节点数为2n-1,所有根节点下有两个空节点,所以节点数为4*n-1; lazy数组:因为修改范围已经包括整个区间,所以不再需要下放 函数模块:(build建树,down下放)+区间操作 注意:操作前下放,操作后赋值 代码:区间加法,区间求和 #include<bits/stdc++.h> using namespace std; int n,m; long long tree[400000],laz原创 2022-01-20 08:25:41 · 538 阅读 · 0 评论 -
树状数组(两种)
树状数组单点修改,区间查询区间修改,区间查询 单点修改,区间查询 关键:lowbit函数 核心代码 int lowbit(int x)// 取x的最小不为0的位置 { return x & -x; } void update(int x, int c) { for (int i = x;i <= n; i += lowbit(i)) tr[i] += c; } ll getsum(int x) { int res = 0; for (int i转载 2022-01-15 22:35:57 · 63 阅读 · 0 评论 -
Hash表(散列表)
Hash表(散列表) 复杂度O(k*n)k为较大的常数 用处:在不适用动态内存的情况下,充分利用静态内存(不需要把数组开的贼大) 判重(和map功能相似) 避免hash冲突:链地址法 代码 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<queue> #include<stack> #include<map> #原创 2022-01-11 13:29:14 · 103 阅读 · 0 评论 -
简单数据结构归纳
单链表 1.插入时判断是否为结尾 2.中途插入时,先连接后面 temp->next=pre->next; //后连前面 pre->next=temp; 双向链表 1.带头结点的双链表当head->next为NULL时链表为空, 2.不带头结点的双链表当head为NULL时链表为空。 ...原创 2022-01-09 18:29:59 · 621 阅读 · 0 评论