![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模板
luozhichen
湘一立信实验学校
展开
-
关于线段树那些事
线段树,坑害萌新,码粮金人线段树不是算法,应该是一种工具。她能把一些对于区间(或者线段)的修改、维护,从O(N)的时间复杂度变成O(logN)。线段树是一种二叉树,也就是对于一个线段,我们会用一个二叉树来表示。比如说一个长度为4的线段,我们可以表示成这样:线段树的查询方法:如果这个区间被完全包括在目标区间里面,直接返回这个区间的值如果这个区间的左儿子和目标区间有交集,那么搜索左儿子如果这个区间的右儿子和目标区间有交集,那么搜索右儿子区间求和就是运用的这个逻辑:ll quer原创 2022-05-14 13:44:18 · 241 阅读 · 0 评论 -
线性筛素数
#include<bits/stdc++.h>using namespace std;int n,m,q;int p[6000010],a[100000010];void zs(int n){ int gs = 0; for(int i = 2;i <= n;i++){ if(a[i] == 0){ a[i] = i; p[++gs] = i; } for(int j = 1;j <= gs;j++){ if(p[j] > a[i] |原创 2022-01-29 16:29:16 · 279 阅读 · 0 评论 -
并查集模板
#include<bits/stdc++.h>using namespace std;int n,m;int z,x,y;int a[1000000];int find(int k){ if(a[k] == k){ return k; }else{ return a[k] = find(a[k]); }}int main(){ cin >> n >> m; for(int i = 1;i <= n;i++){ a[i] = i;原创 2022-01-29 16:28:56 · 81 阅读 · 0 评论 -
最短路模板
Dijkstra:#include<bits/stdc++.h>using namespace std;const int inf = 2147483647;priority_queue <pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >q;int n,m,s,u,v,w;long long z[1000001],qz[1000001],原创 2022-01-29 16:27:59 · 156 阅读 · 0 评论 -
ST表模板
#include<bits/stdc++.h>using namespace std;int n,m;int f[100111][50],logn[10000011];inline int read(){ char c = getchar(); int x = 0, f = 1; while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); } while (c >原创 2022-01-29 16:27:35 · 137 阅读 · 0 评论 -
线段树模板
#include<bits/stdc++.h>#define ll long longusing namespace std;unsigned ll a[1000001],t[1000001 << 2],ans[1000001 << 2],n,m,o,t2[1000001 << 2];inline ll lc(ll x){//left chrildren 左儿子 return x << 1;}inline ll rc(ll x){/原创 2022-01-29 16:27:03 · 116 阅读 · 0 评论 -
高精度4则运算模板
#include<bits/stdc++.h>using namespace std;static const int LEN = 1004;int a[LEN], b[LEN], c[LEN], d[LEN];void clear(int a[]) {//读入 for (int i = 0; i < LEN; ++i) a[i] = 0;}void read(int a[]) {//读入 static char s[LEN + 1]; scanf("%s原创 2022-01-29 16:26:38 · 283 阅读 · 0 评论 -
笛卡尔树模板
#include<bits/stdc++.h>//k满足二叉搜索树性质,w满足小根堆性质(k,w) using namespace std;int n;int a[100000111],lc[10000022],rc[100000002],stk[10000007];//stk为储存栈的数组,lc左儿子,rc右儿子 long long l,r;int pos,top;int read() { int x = 0, w = 1; char ch = 0; while (ch原创 2022-01-29 16:28:36 · 216 阅读 · 0 评论