
数据结构
易橙
FDU硕士在读,退役ACMer。
展开
-
【主席树】区间查询第k大
洛谷P3834:#include<bits/stdc++.h>#pragma GCC optimize(2)#define ll long long#define rep(i,a,n) for(int i=a;i<=n;i++)#define per(i,n,a) for(int i=n;i>=a;i--)#define endl '\n'#define eps 0.000000001#define pb push_back#define mem(a,b) mems原创 2021-02-09 14:33:25 · 306 阅读 · 0 评论 -
01字典树模板
const int maxn=1e5+5;struct Trie{ int val[maxn*31],tree[maxn*31][2],L,root; int newnode(){ mem(tree[L],-1); return L++; } void init(){ L=0; root=newnode(); } void update(int x,int key){ int now=root; for(int i=31;i>=0;i--){ int p=(原创 2021-02-02 12:21:01 · 160 阅读 · 0 评论 -
【数据结构】单调栈/单调队列
单调栈#include<bits/stdc++.h>#pragma GCC optimize(2)#define ll long long#define rep(i,a,n) for(int i=a;i<=n;i++)#define per(i,n,a) for(int i=n;i>=a;i--)#define endl '\n'#define eps 0.000000001#define pb push_back#define mem(a,b) memset(a,原创 2020-10-04 14:38:09 · 141 阅读 · 0 评论 -
【数据结构】带权并查集
hdu3038模板#include<bits/stdc++.h>#define ll long long#define rep(i,a,n) for(int i=a;i<=n;i++)#define per(i,n,a) for(int i=n;i>=a;i--)#define endl '\n'#define eps 0.000000001#define pb push_back#define mem(a,b) memset(a,b,sizeof(a))#defi原创 2020-07-30 10:20:01 · 204 阅读 · 0 评论 -
【图论|数据结构】树链剖分(重链)
时间复杂度:重链剖分O(logn)线段树O(logn)m次询问总:O(m*log(n)*log(n))板子:#include<bits/stdc++.h>#define ll long long#define rep(i,a,n) for(int i=a;i<=n;i++)#define per(i,n,a) for(int i=n;i>=a;i--)#define endl '\n'#define mem(a,b) memset(a,b,sizeof(a)).原创 2020-05-30 17:10:41 · 357 阅读 · 0 评论 -
【数据结构】dfs序建简单线段树
例题:https://ac.nowcoder.com/acm/contest/5158/I解答:这个题很棒!该题求和是把该点所有孩子以及本身加起来求和,所以我们可以动用dfs序,确定L[x]和R[x]的位置。L就是dfs遍历当前时候的时间戳,R是回溯回当前位置的时间戳。而一开始只给你各个节点序号及其对应的值,怎么确定你dfs时间戳呢?他给了你一个起点k,通过跑dfs遍历就能得到。id[df...原创 2020-04-19 21:55:42 · 458 阅读 · 0 评论 -
【数据结构】骚操作--单调栈
以cf622(Div.2)的C2题为例讲解一下吧:**题意:**就是找单峰值。建设大楼,要求每栋楼有限高,而且不允许存在一栋楼两边都有比他更高的楼,要求建成的楼总高度最大。这里我们引入一个单调栈的东西:花了2小时才算勉强搞明白了(感谢wucstdio大佬)这里运用单调栈来做的话,时间复杂度只有O(n),难点在于这个单调栈该如何去写。下面上ac的代码,里面单调栈的部分运用了2次,分别是求上升...原创 2020-02-24 14:09:55 · 203 阅读 · 0 评论 -
【字符串/数据结构】Trie树(字典树、前缀树)
感谢:https://blog.youkuaiyun.com/qq_38891827/article/details/80532462原创 2020-01-29 15:56:43 · 486 阅读 · 0 评论 -
【数据结构】离散化&&权值线段树
Part 1:“离散化”是什么嘞?先介绍一下离散化 桶排大家应该知道,就是开一个数组(下标为数值,记录了该数值的出现次数)然后遍历过去如果出现次数不为零,那就输出这些数字,理论时间复杂度可以达到O(N)但是由于内存限制,不能开很大的数组。然而 如果某个数列中的数字不要求大小确定,只要求这些数字有相对的大小就够了的话,离散化就有了用武之地(换言之,如果一个数的大小在1e9上下,那我们可以用离散化...原创 2020-01-19 12:54:30 · 701 阅读 · 1 评论 -
【数据结构】线段树实现ST表功能(RMQ问题)
以POJ3264#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define ll long long#define rep(i,a,n) for(int i=a;i<=n;i++)#define per(i,n,a) for...原创 2020-01-18 14:11:21 · 257 阅读 · 0 评论 -
【数据结构】线段树进阶(乘法/根号线段树)
感谢博主:https://www.cnblogs.com/jason2003/p/9676729.html板块一:乘法线段树:如果这个线段树只有乘法,那么直接加入lazytage变成乘,然后tree[i].sum*=k就好了。但是,如果我们是又加又乘,那就不一样了。当lazytage下标传递的时候,我们需要考虑,是先加再乘还是先乘再加。我们只需要对lazytage做这样一个处理。lazyt...原创 2020-01-17 15:40:52 · 948 阅读 · 0 评论 -
【数据结构】线段树入门
感谢博主:https://www.cnblogs.com/jason2003/p/9676729.html板块一:区间查询+单点修改洛谷P3374#include<bits/stdc++.h>#define ll long long#define rep(i,a,n) for(int i=a;i<=n;i++)#define per(i,n,a) for(int i=...原创 2020-01-16 22:33:08 · 199 阅读 · 0 评论 -
【数据结构】ST表
题目链接,洛谷P3865https://www.luogu.com.cn/problem/P3865模板代码:#include<iostream>#define ll long long#define endl '\n'#define IO ios::sync_with_stdio(false);cin.tie(0);using namespace std;const ...原创 2020-01-15 20:15:42 · 228 阅读 · 0 评论 -
【数据结构】链表与线性表
Problem A:本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。input:1 zhang 782 wang 803 li 754 zhao 850output:1 zhang 782 wang 803 li 754 zhao 85#include <stdio.h>#include <stdlib.h>#include <s...原创 2019-10-30 20:03:09 · 126 阅读 · 0 评论 -
#STL中的平衡二叉树数据结构set&&multiset
*有时需要在大量增加、删除数据的同时,还要进行大量数据的查找。*希望增加数据、删除数据、查找数据都能在log(n)复杂度完成*排序+二分查找显然不可能,因加入新数据就要重新排序*可以使用“平衡二叉树”数据结构存放数据,体现在STL中,就是以下四种“排序容器”:multiset &set &multimap &map(就是使用该容器的时候,边添加边自动排序了,很方便...原创 2019-08-02 11:13:37 · 283 阅读 · 0 评论 -
#STL中的平衡二叉树数据结构map&&multimap
multimap容器中的元素,都是pair形式的(之前提到过)multimap<T1,T2> mp;则mp里的元素是如下类型的:struct{ T1 first;//关键字 T2 second;//值};multimap中的元素按照first排序,并可以按first进行查找缺省的排序规则是:"a.first<b.first"为true,则a排在b后面...原创 2019-08-02 16:35:46 · 234 阅读 · 0 评论