数据结构
C++数据结构
Andysun06
这个作者很懒,什么都没留下…
展开
-
C++优先队列
优先队列所需头文件 #include <queue>他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队(其实就是在先返回最大的或最小的)定义priority_queue<int, vector<int>, less<int> > a; //等同于 priority_queue<int> a ,大顶堆,先返回大的priority_queue<int, vector<int>, g原创 2021-08-16 15:57:07 · 140 阅读 · 0 评论 -
C++主席树求第k小得数模板程序详解
#include<bits/stdc++.h>#define reint register intusing namespace std;int n,m;inline void read(int &a) { //快读 int x(0),y(1); char c=getchar(); while(c<'0'||c>'9') { if(c=='-')y=-1; c=getchar(); } while(c>='0'&&c<=原创 2021-08-13 22:01:11 · 190 阅读 · 0 评论 -
C++主席树的单点修改&单点查询模板代码详解
部分操作和线段树相似,本文不作解释,如果对未作解释的部分有疑问的,可以看这篇博文,讲得很详细#include<iostream>#include<cstdio>#define reint register intusing namespace std;int n,m;int s[1000005],v,loc,value,p,root[1000005],top; //s存原数组,v,loc,value,p意义与题目相同,root存根,top统计节点数struct n.原创 2021-08-13 18:15:01 · 420 阅读 · 0 评论 -
C++线段树区间乘法&区间加法&区间查询代码详解(可能是最详细的了)
当我刚刚接触线段树区间乘法时,因为一直没想懂乘法和加法的懒标记怎么一起下推,上百度和CSDN搜索程序讲解,但搜到的绝大多数都是一些没有讲解,直挂代码的博文,很难让人看懂代码意思,往往会花费大量时间在理解变量的作用和操作的原理,因此为了方便初学者学习(也为了方便我以后复习),就写了这篇博文,希望对你有所帮助!题目:代码解释:代码虽然长,但原理简单#include<iostream>#include<cstdio>#define ll long longusing.原创 2021-08-12 21:24:21 · 991 阅读 · 0 评论 -
C++线段树区间加法&区间查询代码详解(超详细)
#include <bits/stdc++.h>#define MAXN 100005using namespace std;typedef long long ll;inline ll read() { //快读 ll ans = 0; char c = getchar(); while (!isdigit(c)) c = getchar(); while (isdigit(c)) { ans = ans * 10 + c - '0'; c = getchar原创 2021-08-11 22:01:05 · 558 阅读 · 0 评论 -
树状数组模板程序讲解2(超详细)
本文主要介绍和解释树状数组的区间修改和单点查询的模板区间修改和单点查询请看树状数组模板程序讲解1(超详细)模板题目:题目链接模板代码:本题需要用到差分思想,如果不会可以先在这里学习,否则很难理解本题做法(而且差分经常和树状数组一起出现)为了方便你对程序的理解,可以在不太清楚的地方结合此图思考一下,能节约思考时间。讲解请看代码注释#include<iostream>#include<cstdio>#define reint register int.原创 2021-08-11 19:43:41 · 279 阅读 · 0 评论 -
树状数组模板程序讲解1(超详细)
本文主要介绍和解释树状数组的模板,方便初学者理解树状数组程序写法,如果你还不清楚树状数组的原理or作用,可以在这里寻找适合你的教程~模板题目:题目连接模板代码:为了方便你对程序的理解,可以在不太清楚的地方结合此图思考一下,能节约思考时间。讲解请看代码注释#include<iostream>#include<cstdio>using namespace std;int f[2000001],n; //f用来维护树状数组,n是 数列数字总个数int lo.原创 2021-08-11 17:27:28 · 188 阅读 · 0 评论 -
C++栈用法(STL实现&数组实现)
STL栈的分析及用法:包含栈的头文件:#include<stack> 。栈的特点:先进后出,与队列相反定义一个栈:stack<Type> s; 其中Type为数据类型。栈的主要操作: s.push(a);//将a压入栈顶 s.pop();//删除栈顶的元素,但不会返回 s.top();//返回栈顶的元素,但不会删除 s.size();//返回栈中元素的个数 s.原创 2021-08-09 17:46:42 · 557 阅读 · 0 评论 -
C++队列实现(STL实现和数组实现)
STL队列的分析及用法:包含队列的头文件:#include<queue> 。队列的特点:先进先出,与栈相反定义一个队列:queue<Type> q; 其中Type为数据类型。队列的主要操作: q.push(a)//将a压入队列尾部 q.pop()//删除队首元素,但不返回 q.front()//返回队首元素,但不删除 q.back()//返回队尾元素,但不删除原创 2021-08-09 17:48:19 · 485 阅读 · 0 评论