数据结构
各种数据结构:STL,线段树 等
OI之神
这个作者很懒,什么都没留下…
展开
-
P3379 【模板】最近公共祖先(LCA)(倍增/树剖)
倍增代码:#include<bits/stdc++.h>using namespace std;const int maxn=5e5+5;int head[maxn],cnt,root,fx[21],lg[maxn],f[maxn][21],dep,depth[maxn],n,m,s;struct T{ int to,nxt;}edge[2*maxn]; void add(int from,int to){ edge[++cnt].to=to; edge[cnt].n原创 2021-11-03 00:02:29 · 154 阅读 · 0 评论 -
P3384 【模板】轻重链剖分/树链剖分
树链剖分模板题板子代码:#include<bits/stdc++.h>using namespace std;const int maxn=100010;#define ll long longint n,m,r,cnt,head[maxn],tot,size[maxn],dfn[maxn],num[maxn],in[maxn],father[maxn],depth[maxn],top[maxn],son[maxn];ll p;struct t{ int t,l;}e原创 2021-11-02 23:36:12 · 115 阅读 · 0 评论 -
平衡树(Treap)
洛谷 P3369 【模板】普通平衡树Treap模板:#include<bits/stdc++.h>using namespace std;int n,type,cnt,ans,orz,root;struct T{ int left,right,key,weight,son,equ;}node[100010];void update(int t){ node[t].son=node[node[t].left].son+node[node[t].right].son+node[原创 2021-10-30 18:03:26 · 145 阅读 · 0 评论 -
线段树(累乘)
线段树 乘+加居然错在了输入是循环m而不是n,卡了一个小时。。。。。。一份优美的代码:#include<bits/stdc++.h>using namespace std;#define ll long longconst ll maxn=1e5+1;struct T{ ll data,add,mul,l,r;}node[4*maxn];ll n,m,p,a[maxn],i;ll type,x,y,k;void build(ll pos,ll l,ll r){ no原创 2021-08-15 00:55:05 · 90 阅读 · 0 评论 -
线段树(累计和)
好气啊,因query和change的函数l,r返回值报错憋了5分钟,下次一定注意long long暴力美学这份代码写的还是很美观的#include<bits/stdc++.h>using namespace std;const long long maxn=1e5+1;long long n,m,a[maxn];struct T{ long long data,add,l,r;}node[4*maxn];void build(long long pos,long long原创 2021-08-14 22:08:30 · 67 阅读 · 0 评论 -
浅谈重载运算符
重载运算符听起来就很高深,其实就是你看不惯系统对于“<”,“>”之类的符号的定义,自己进行修改。下面给一个模板:bool operator < (const node &a,const node &b) //node可以为其他类型{ return a.v<b.v; //这里有点sort中的cmp的味道}要注意的是:代入的a,b前一定要有 & ,因为只会修改!...原创 2021-08-11 23:56:16 · 76 阅读 · 0 评论 -
浅谈vector
这个vector实在太事多了首先,vector作为滚动数组,有一个非常特殊的功能,就是特别能挤:根据这种骚气的操作,衍生出了vector的滚动。敲黑板:将几个vector的重要函数1.vector定义:vector vec;(没有存储空间)vector vec(10);(先定义10个存储空间)vector vec(10,1);(10个存储空间值都为1)vector vec(a);(将a复制到vec)要注意:vector是从下标0开始存储!!!2.vector操作vec.clear(原创 2021-08-12 21:42:21 · 148 阅读 · 0 评论 -
奇怪的队列(线段树/vector水过)
奇怪的队列 (queue.pas/c/cpp)【问题描述】 nodgd 的粉丝太多了,每天都会有很多人排队要签名。 今天有݊个人排队,每个人的身高都是一个整数,且互不相同。很不巧,nodgd 今天去忙别的事情去了,就只好让这些粉丝们明天再来。同时 nodgd 提出了一个 要求,每个人都要记住自己前面与多少个比自己高的人,以便于明天恢复到今天 的顺序。 但是,粉丝们或多或少都是有些失望的,失望使她们晕头转向、神魂颠倒,已经 分不清楚哪一边是“前面”了,于是她们可能是记住了前面比自己高的人的个数, 也可能是记原创 2021-08-12 21:50:02 · 158 阅读 · 0 评论