- 博客(9)
- 收藏
- 关注
原创 2021CSP-J组回忆录
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-10-24 14:23:37
156
原创 乘法逆元模板
逆元定义 一般用于求 ab mod(p)\dfrac{a}{b}\space mod (p)ba mod(p) 若 a∗x≡1 (mod p)a*x ≡ 1 \;(mod \;p)a∗x≡1(modp) ,且 a与 p互质,那么我们就能定义: x 为 a 的逆元,记为 a−1a^{-1}a−1 ,所以我们也可以称 x 为 a 的倒数( mod pmod \;pmodp 意义如下)。 所以对于 ab mod p\frac{a}{b}\ \; mod\;pba&
2021-10-16 21:10:18
216
7
原创 ST表模板
ST表唯一一个优点就是 求区间最值 线段树 n log(n) 爆搜 n平方 ST表 o(1) 非常的好用! 主要思想就是倍增搜索 再通过简单的擂台比较大小 #include<bits/stdc++.h> using namespace std; inline int read() { int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();} while (ch&g
2021-10-16 20:49:04
150
原创 treap模板
treap的本质实际上就是tree+heap 用树的形式实现类似于堆得操作 中心代码就是 左旋 右旋 其中的原则就是堆顶最大 (可以用并查集+树链刨分,不过好像有点大材小用了 ) ```cpp #include<bits/stdc++.h> using namespace std; struct node{ int key,priority; int left,right; }; int SIZE=1e5; int num_nodes,root; node nodes[SIZE]; in
2021-10-16 20:44:40
151
原创 树状数组模板
其实树状数组就是一个简单的离散化 主要思想就是活用lowbit lowbit是什么?就是一个数二进制最低位1和后面的0表示的数值 因为每一个数都可以用几个二进制来表示 所以用树状数组可以方便的存储数据 再加上较好理解的区块查询和更新 建议如果没有数学知识的纯板子区间和,区间更新的题都可以用树状数组! #include<bits/stdc++.h> using namespace std; const int M=10000000; int c[M],n,m; int lowbit(int x){
2021-10-16 20:36:39
83
原创 线段树(标记永久化写法)
#include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; struct SegmentTree{ int l,r; int sum; int add; }tree[maxn*4]; int a[maxn]; inline void build(int p,int l,int r){ l=tree[p].l;r=tree[p].r; if(l==r){tree[p].sum=a[l];return;} int
2021-10-16 20:30:18
181
原创 线段树(详细注释—pushdown写法)
#include<bits/stdc++.h> using namespace std; const int M=1e5+5; int n,a[M]; struct SegmentTree{ int l,r;//左右端点 int sum;//区间和 int lazy;//增量延迟标记 }tree[M*4]; //建树 void build(int p,int l,int r){//区间编号,区间左端点,区间右端点 tree[p].l=l;tree[p].r=r;//标识区间左右端
2021-10-16 20:29:22
657
原创 dijistra模板(priority_queue优化)
#include<bits/stdc++.h> using namespace std; typedef pair<int,int> pii; const int N=1e5+5; const int M=1e5+5; vector<pii> e[N]; int dist[N],vis[N]; int n,m; void dijkstra(int src) { memset(dist,0x3f,sizeof(dist)); memset(vis,0,sizeof(vi
2021-10-16 20:27:30
187
原创 Tarjan缩点+拓补排序(注释较全)
啊啊啊关于这个模板我要啰嗦两句。。。。 《关于理论全懂但是不知道代码构建又看不懂别人代码这档事》 真的是辛辛苦苦花了大概2小时写的代码详细注释版 劝大家写模板时一定要注释清楚数组的含义 不然复习时真的完全看不懂。。。。。。 #include<bits/stdc++.h> using namespace std; const int MAXN=100010; inline int read(){ int x=0,f=1;char ch=getchar(); if(!isdigit(ch)){i
2021-10-16 20:25:43
289
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人