![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模板
LucienShui
因为孤独是人之常态,所以陪伴才显得格外可贵。
展开
-
[模板] - 线段树 - Lazy标记 - 单点/区间更新 - 模板
线段树 - Lazy标记 - 单点/区间更新 - 模板目录:前言在这篇文章的代码中用到的宏定义Lazy标记区间更新单点更新模板例题1. 前言: 线段树我花了整整两天的时间去啃,进度很慢,但终究还是坚持下来了,在涉及到Lazy标记的部分卡了很久,刚开始看了一大堆理论,发现很晦涩,也看不懂,后来结合代码一点一点的慢慢就看懂了。2. 在这篇文章的代码中用到的宏定义: PS:注意宏定义部原创 2017-05-26 09:38:11 · 1184 阅读 · 0 评论 -
「模板」 归并排序
void mergearray(int a[], int first, int mid, int last, int temp[]){ int i = first, j = mid + 1; int m = mid, n = last; int k = 0; while (i <= m && j <= n) { if (a[i] <= a[j])原创 2017-08-19 23:49:38 · 200 阅读 · 0 评论 -
「模板」 随机遍历数组
#include <iostream>#include <cstdlib> // srand rand#include <ctime> // time#include <algorithm>using namespace std;/** * 随机遍历数组 */void Traverse_Random(int arr[], int n){ srand(time(NUL原创 2017-08-19 23:51:05 · 1018 阅读 · 0 评论 -
[模板] 二叉堆 - 优先队列的二叉堆数组实现
最近开始学数据结构,一直无心更新博客,今天结束集训,晚上打算码一下最近的进度。/* * 创建一个最大容量为MaxSize的int型堆:MaxHeap<int> que(MaxSize); * 默认最大容量为1007:MaxHeap<int> que; * * 作为优先队列: * pop(); 同优先队列pop(),如果队列已为空还要执行pop,就会执行死循环以报错。原创 2017-08-19 20:53:37 · 443 阅读 · 0 评论 -
[模板] - 读入挂 读入优化
我的读入挂:int read() { int x = 0; char c = getchar(); while (c < '0' || c > '9')c = getchar(); while (c >= '0' && c <= '9') { x = x * 10 + c - '0'; c = getchar(); }原创 2017-08-06 14:02:49 · 4387 阅读 · 7 评论 -
[模板] - LCA倍增
成员:const int maxn = 1007;int up[maxn][32];//倍增数组int depth[maxn];//每个点在树中的深度int n,m;//n个点,m条边bool vis[maxn];vector<int> tree[maxn];//邻接表函数:DFS记录深度和初始化倍增数组://记录各节点i的深度depth[i],dfs一遍即可O(N)void dfs(i原创 2017-08-06 14:18:49 · 340 阅读 · 1 评论 -
[模板] - 尺取法
尺取法: 尺取法应用于这么一类问题:在给定一组数据中找到不大于某一上限的“最优连续子序列”。 据个人理解来说,在尺取过程中就像是一条虫子在蠕动一样,先伸头,再缩尾。代码实现:int l = 0, r= 0, sum = 0, ans=n+1;while(true){ while(r < n && sum < s) sum+=a[r++];//从前面开始 if(sum < s)原创 2017-07-24 19:43:01 · 498 阅读 · 0 评论 -
[模板] - 矩阵快速幂
说明: 所有可能用到的操作已经被封装进结构体里了。用的时候根据题目再修改一下即可。实现:const int maxn = 107;int Matrixsize = 2, mod = int(1e9)+7;struct Matrix { int m[maxn][maxn]; Matrix(int i = 0) { memset(m, 0, sizeof m);原创 2017-08-01 20:42:36 · 273 阅读 · 0 评论 -
扩展BSGS - 模板 - 数论
简介 BSGS算法,原名Baby Steps Giant Steps,又名大小步算法,拔山盖世算法,北上广深算法——by SLYZoier,数论基本算法之一。问题 给定A,B,CA,B,C,求满足 Ax≡B (mod C)A^x \equiv B\ (mod\ C) 的最小非负整数xx。模板#include typedef long long ll;usin原创 2018-01-23 15:16:06 · 631 阅读 · 0 评论 -
「模板」 左偏树 - 实现可并优先队列
template<typename T, typename _Compare=std::less<T> >class leftist_tree {private: struct node { T data; int deep; node *l, *r; node(const T &d) : data(d), deep(1),原创 2017-08-19 23:47:35 · 512 阅读 · 0 评论 -
[模板] 树堆 - Treap的指针和数组实现及一些例题
指针版:template <class T, class Compare = std::less<T> >class Treap {private: struct treap {//成员结构体 int size, fix;//以当前节点为根的树的节点数目,和调整树结构的fix随机数 T key;//每个节点的权,可以定义成自己想要的类型 C原创 2017-08-19 21:11:15 · 673 阅读 · 0 评论 -
[模板] - 略优化的并查集
略优化的并查集模板 之前写过一个题,是并查集+搜索,思路很明确但是不论我用什么我目前已知的方法去写这个题都一直TLE,最后问了学长才知道在做并归操作的时候通过维护树高可以优化最后所得树的结构。 闲话不多,还是结合注释看代码吧。const int maxn = (int)1e5+7;int pre[maxn],height[maxn];//pre就不解释了,height是当前树高int Fin原创 2017-05-15 14:28:56 · 251 阅读 · 0 评论 -
[模板] - 全排列
stl库函数输出全排列与DFS输出全排列原创 2017-05-14 00:38:00 · 424 阅读 · 0 评论 -
[模板] - 位运算求GCD
//位运算求解大数最大公约数i64 stein(i64 a,i64 b){ if(a<b) return stein(b,a); if(b==0) return a; if((a&1)==0&&(b&1)==0) return 2*stein(a>>1,b>>1);//a and b are even if((a&1)==0) return stein(a>>1,b);原创 2017-05-14 00:28:00 · 903 阅读 · 0 评论 -
[模板] - 快速幂 - 快速乘法
不含mod://快速乘法long long qmul(long long a, long long b){ long long ans=0; while(b) { if(b&1) ans = (ans + a); a = (a+a); b >>= 1; } return ans;}//快速幂long long q原创 2017-05-14 00:19:38 · 387 阅读 · 0 评论 -
[模板] - 网络流 - Dinic
数据成员:const int maxn = 207, INF = 0x3f3f3f3f;int n, m, mp[maxn][maxn];//邻接矩阵int que[maxn*maxn], head, tail;//BFS队列 ,首,尾int dist[maxn];//距源点距离,分层图 int ans;函数:BFS查询是否连通:bool bfs() { memset(dist,-1原创 2017-08-02 23:09:12 · 279 阅读 · 0 评论 -
[模板] - 网络流 - Dinic & 当前弧优化
函数:邻接表部分:const int INF = 0x3f3f3f3f, maxn = 157;int N, NP, NC, M;struct E { int u, v, flow; E(int u = 0, int v = 0, int flow = 0): u(u), v(v), flow(flow) {}} edg[maxn * maxn];int cnt_edg, S,原创 2017-08-03 17:40:04 · 3863 阅读 · 5 评论 -
[模板] + [详解] - 二分图 - KM算法
讲解参考: 我就不再贴一遍了,直接传送门吧:传送门模板: 加了一些自己的理解。成员:int love[maxn][maxn],n;//love[i][j]表示第i个女生对第j个男生的好感度int ex_girl[maxn];//第i个女生的当前期望值为ex_girl[i]int ex_boy[maxn];//同上bool vis_girl[maxn];//标记在当前配对过程中girl[i]原创 2017-08-10 22:43:06 · 510 阅读 · 2 评论 -
[模板] + [详解] - 二分图最大匹配 - 匈牙利算法
讲解: 别人的博客传送门,图做的真的很棒:传送门模板: 成员:const int maxn = 207;int n,m;//n个点,m条边bool col[maxn];//对点进行染色bool vis[maxn];//标记点int link[maxn];//将两点进行连接vector<int> edge[maxn];//邻接表void addedge (int u, int v) {//原创 2017-08-10 22:59:11 · 408 阅读 · 0 评论 -
[模板] C++ BigInteger 类
永久地址http://www.lucien.ink/archives/313/不多比比,直接上模板#include<bits/stdc++.h>//大整数struct BigInteger { static const int BASE = 100000000;//和WIDTH保持一致 static const int WIDTH = 8;//八位...原创 2018-08-07 17:44:01 · 2292 阅读 · 0 评论