算法模版
做一只大熊猫
让优秀成为一种习惯!
展开
-
acwing1128. 信使( spfa模板题)
题意代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f#define INF 0x3f3f3原创 2021-11-06 19:10:18 · 108 阅读 · 0 评论 -
acwing1129. 热浪(dijkstra 模板题)
题意给一个无向图,让我们找到一个从 s 到 e 的一条单源最短路。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define i原创 2021-11-05 11:23:59 · 332 阅读 · 0 评论 -
二维单调队列——模板
acwing 1091. 理想的正方形算法思想我们求一个二维区间的时候的最值,可以先对每一行求最值(对行跑单点队列),并把最值存到对应的列上,然后对列上之前求求出来的最值再跑一遍单调队列。#include <bits/stdc++.h>using namespace std;const int N = 1005;const int inf = 0x3f3f3f3f;int n, m, k;int w[N][N], a[N], b[N], c[N];int mx[N][N]原创 2021-09-24 09:48:00 · 842 阅读 · 0 评论 -
背包问题求具体方案——模板
题目:acwing 12.#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f#define INF原创 2021-09-15 16:54:16 · 194 阅读 · 0 评论 -
有依赖的背包问题(树形 dp)——模板
代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f#define INF 0x3f3f3f3..原创 2021-09-15 15:39:48 · 173 阅读 · 0 评论 -
多重背包单调队列优化——模板
时间复杂度 O(n*m)代码#include <bits/stdc++.h>using namespace std;const int N = 2e4 + 10;int n, m;int f[N], g[N], q[N], tt, hh; //f、g 互为滚动数组int main(){ scanf("%d %d", &n, &m); int v, w, s; for (int i = 1; i <= n; i ++.原创 2021-09-14 10:33:32 · 148 阅读 · 0 评论 -
trie树——模板
基础模板代码#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int son[N][26], cnt[N], idx;char ch, s[N];void insert(char s[]){ int u = 0; for (int i = 0; s[i]; i ++) { int v = s[i] - 'a'; if (son[u][v]原创 2021-09-05 12:37:42 · 90 阅读 · 0 评论 -
最小生成树(prime、kruskal)——模版
prim算法(稠密图适用–O(n^2)) 算法解释待添加。。。#include<iostream>#include<cstring>#include<algorithm>using namespace std;#define inf 0x3f3f3f3f#define N 505int n,m;int mp[N][N];int dis[N],vis[N];int prim(){ memset(dis,inf,sizeof dis);原创 2020-07-28 11:47:46 · 165 阅读 · 0 评论 -
表达式求值(整除)——模板
整除版#include<iostream>#include<map>#include<stack>using namespace std;map<char, int> isp, icp;const char opers[6] = {'+', '-', '*', '/', '(', ')'};const int isps[6] = {3, 3, 5, 5, 1, 6}, icps[6] = {2, 2, 4, 4, 6, 1};void ini.原创 2021-09-03 12:10:02 · 93 阅读 · 0 评论 -
单链表和双链表——模板
单链表代码#include <iostream>using namespace std;const int N = 100010;int n;int h[N], e[N], ne[N], head, idx;//对链表进行初始化void init(){ head = -1;//最开始的时候,链表的头节点要指向-1, //为的就是在后面进行不断操作后仍然可以知道链表是在什么时候结束 /* 插句题外话,我个人认为head其实就是一个指针,是一原创 2021-09-03 12:00:56 · 87 阅读 · 0 评论 -
堆排序和模拟堆——模板
堆排序代码#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int h[N], sz;void down(int u){ int v = u; if (u * 2 <= sz && h[v] > h[u * 2]) v = u * 2; if (u * 2 + 1 <= sz && h[v] > h[u * 2 +原创 2021-09-03 11:13:08 · 63 阅读 · 0 评论 -
哈希散列表——拉链发、空闲寻址法——模板
空闲寻址法#include <cstring>#include <iostream>using namespace std;//开放寻址法一般开 数据范围的 2~3倍, 这样大概率就没有冲突了const int N = 2e5 + 3; //大于数据范围的第一个质数const int null = 0x3f3f3f3f; //规定空指针为 null 0x3f3f3f3fint h[N];int find(int x) { int t =.原创 2021-09-02 13:01:50 · 106 阅读 · 0 评论 -
差分和二维差分——模板
题目链接代码#include <bits/stdc++.h>const int N = 1e5 + 10;int a[N], d[N];int main(){ int n, q; scanf("%d %d", &n, &q); for (int i = 1; i <= n; i ++) scanf("%d", &a[i]), d[i] = a[i] - a[i - 1]; int l, r, x; while原创 2021-09-01 20:23:40 · 68 阅读 · 0 评论 -
acwing788. 逆序对的数量(归并排序)——模板
代码#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int q[N], tmp[N];long long ans = 0; //逆序对数个数void merge_sort(int l, int r){ if (l >= r) return; int mid = (l + r) >> 1; merge_sort(l, .原创 2021-09-01 14:10:04 · 80 阅读 · 0 评论 -
AcWing 787. 归并排序——模板
代码#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int q[N], tmp[N];void merge_sort(int l, int r){ if (l >= r) return; int mid = (l + r) >> 1; merge_sort(l, mid); merge_sort(mid + 1, r); int k .原创 2021-09-01 13:51:41 · 101 阅读 · 0 评论 -
acwing785. 快速排序——模板
思路快排 —— 分治分成子问题递归处理子问题子问题合并代码#include <bits/stdc++.h>using namespace std;void Swap(int & x, int & y){ int tmp = x; x = y; y = tmp;}const int N = 1e6 + 10;int q[N];void quick_sort(int l, int r){ if (l >= r.原创 2021-09-01 13:17:55 · 81 阅读 · 0 评论 -
数据范围反推算法复杂度以及算法内容——模板
知识点补充模板博客原创 2021-08-24 17:31:58 · 76 阅读 · 0 评论 -
高斯消元——模板
标志模板题目链接#include <bits/stdc++.h>using namespace std;const int N = 505;const int M = 1005;const double esp = 1e-6;double a[N][M];int n, m;int gauss(){ //千万注意:所有判断精度的地方 fabs()不要忘记否则会出现错误 int c, r; for (c = 1, r = 1; c <= m; c原创 2021-08-24 16:32:09 · 175 阅读 · 1 评论 -
莫比乌斯函数——模板
1. 莫乌斯函数百科2. 莫比乌斯函数性质求单个数的莫比乌斯函数值int get_mu(int x) { if (x == 1) return 1; int num = 0; //质数个数 for (int i = 2; i * i <= x; i ++) { if (x % i == 0) { int cnt = 0; whi原创 2021-08-19 20:02:33 · 113 阅读 · 0 评论 -
欧拉筛、 欧拉函数、欧拉筛求因子个、因子和——模板
教程讲解欧拉筛const int N = 1e5 + 10;int prim[N], vis[N], len;inline void eular_shai(int n) // n < N{ for(int i = 2;i <= n;i ++) { if(! vis[i]) prim[len ++] = i; for(int j = 0;j < len && i * prim[原创 2021-08-04 11:53:46 · 544 阅读 · 0 评论 -
数论基础知识汇总
同余定理:文章证明:https://blog.csdn.net/qq_36345036/article/details/77407069视频证明:https://v.youku.com/v_show/id_XMTUyMzY5OTU1Mg==.html?裴蜀定理:百科:https://baike.baidu.com/item/ 裴蜀定理 / 5186593?fr=aladdin 裴蜀定理证明:ax+by = c https://www.cnblogs.com/bljfy/p/931..原创 2021-07-20 20:52:39 · 440 阅读 · 0 评论 -
Manacher 马拉车
文章目录思路如下Manachar代码注释题解如下Problem Description One day, sailormoon girls are so delighted thatthey intend to research about palindromic strings. Operation containstwo steps: First step: girls will wr...原创 2020-01-12 17:49:57 · 190 阅读 · 0 评论 -
AC自动机模板
知识点视频讲解文章讲解LuoguP3808【模板】AC 自动机(简单版)#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int n;char s[N];namespace AC{int tr[N][26], tot;int e[N], fail[N]; //e[i] 表示以 i 这个节点编号位置为结尾的单词有多少个void insert(char s[]){原创 2021-05-26 21:00:27 · 136 阅读 · 0 评论 -
ACM 所有算法
转载 2021-04-27 19:37:09 · 100 阅读 · 1 评论 -
树链剖分——模板
知识点讲解视频讲解博客讲解 1博客讲解 2oi-wiki 讲解重链刨分代码#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <string>#include <queue>#include <map>#include <bi原创 2021-04-14 10:54:48 · 108 阅读 · 0 评论 -
B - 太空飞行计划 LibreOJ - 6001(最大权闭合子图 模板)
题意给我们 m 个实验,n 个实验仪器,每个实验需要 n 个仪器中的一部分(看做图中的边),每个仪器如果被使用要先被购买,而被购买的时候需要花上一定的费用,而我们做某个实验会得到特定的收益。现在让我们合理的选择一些实验,是使净收益最大,输出做大的值和选择了那些实验, 以及实验的用的仪器。思路首先介绍什么是:“最大权闭合子图”,简单说就是我们在一个图有向图中选择一个点,而这些点指向的下一个点也在我们所选择的集合中。对应到我们这题里就是我们我们要选择做某个实验就要,就要选(买)这个实验所要求原创 2021-03-24 21:27:19 · 157 阅读 · 1 评论 -
最短路 HDU - 2544(Dijkstra 模板)
知识点传送门最短路 HDU - 2544#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <string>#include <queue>#include <map>#include <bitset>#include <v原创 2021-03-16 16:48:05 · 108 阅读 · 0 评论 -
Minimum Transport Cost HDU - 1385(flyoed + 记录路径 模板)
分析这题就是就是 floyed , 而且给的图还有点权 cost [i],难点是在记录路径,在记录路径的时候我们可以设一个数组,path [][], 初始化 path [i][j] = j, 在随着的 floyed 更新 dis [][] 数组的时候只需要也随着更新 path [i][j] 就行了,输出的时候的代码为#include <iostream>#include <stdio.h>#include <string.h>#include <原创 2021-03-16 09:22:41 · 97 阅读 · 0 评论 -
L - L Gym - 101498L(超级源点 + 最短路模板)
讲题之前,先纪念一下我的 vj 700题( ̄▽ ̄)~*,接下来向 800 题冲冲冲····知识点:传送门题意给我们一个带有边权的有向图,边权可以为 正 或 负。让我们求图中的图中的最短路,注意有向图可能形成 负环,如果有负环输出 -inf。思路我们首先 虚拟出来一个超级源点 0, 让后让 0 点与 1~n 中的每个点都练接一条长 0 的有向边,然后从 0 节点开始跑最短,因为存在负环所以不能用 dijkstar,可以用 spfa 来跑最短路,如果图中存在负环,负环上的点会一会被放原创 2021-03-16 09:11:27 · 175 阅读 · 1 评论 -
LCA离线、在线模板
讲解传送门离线 tarjan LCA#include <vector>#include <cstdio>using namespace std;inline int read(){ int x = 0, f = 0; char c = getchar(); for (; c < '0' || c > '9'; c = getchar()) if (c == '-') f = 1; for (; c >= '0' &原创 2021-03-05 12:08:27 · 111 阅读 · 0 评论 -
二维前缀和——模板
最大子矩阵描述给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。输入输入数据的第一行为一个正整数 T,表示有 T 组测试数据。每一组测试数据的第一行为四个正整数 n,m,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有 n 行 m 列。接下来这个矩阵,有 n 行,每行有 m 个不大于 1000 的正整数。输出对于每组数据,输出一个整数,表示子矩阵的最大和。输入样例 114原创 2020-12-04 20:46:00 · 234 阅读 · 1 评论 -
大整形__int128 使用——模板
使用注意只能用在 Linux 系统的 oj 上,数据表示的数据范围最大可以是:85070591730234615865843651857942052864(8e37)即:(1 <<126) 自己定义输入输出函数:scan、print__int128 占 sizeof (__int128)=16 字节#include <iostream>#include <stdio.h>#include <string.h>#include <..原创 2020-11-17 10:32:15 · 479 阅读 · 0 评论 -
大区间中任意数的因子和——模板
#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <string>#include <queue>#include <map>#include <bitset>#include <vector>void fre() {原创 2020-11-16 16:00:19 · 96 阅读 · 0 评论 -
2020.10.31 水一篇重宏定义.cpp
#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <string>#include <queue>#include <map>#include <bitset>#include <vector>void fre() {原创 2020-10-31 21:05:33 · 228 阅读 · 0 评论 -
高精度(+ - * / %)——模版
#include <bits/stdc++.h>using namespace std;#define ll long long struct BigInt{ const static int mod=10000; const static int LEN=4; int a[800], len; BigInt() { memset(a,0,sizeof(a)); len=1; } void init原创 2020-09-02 17:04:30 · 191 阅读 · 0 评论 -
字符串Hash模版——字符串
讲解 教程教程传送门 复杂度设主串为s,被查询串为t,长度分别为n、m预处理主串s的复杂度为O(n)预处理被查询串的复杂度为O(m)每次查询的复杂度为:O(n-m)自然溢出代码(通过 unsigned 无符号数据类型 对数据溢出时自动 取余)⚠️自然溢出必须是无符号的数据类型否则的话一旦某个出现数据溢出,这个数就可能变成负数了#include <iostream>#include <stdio.h>#include <string.h&原创 2020-08-23 15:18:18 · 1351 阅读 · 0 评论 -
AC自动机模版——字符串
概述 作用AC自动机主要用于解决多模式串的匹配问题(具体指的是:如下图中 模式串 p中有多个 字符串,问这些字符串在 主串s的出现的总次数),是字典树(trie树)的变种,一种伪树形结构(主体是树形的,但是由于加入了失败指针,使得它变成了一个有向图); 过程讲解讲解视频代码#include<iostream>#include<string.h>#include<string>#include<vector>原创 2020-08-23 11:37:13 · 227 阅读 · 0 评论 -
ACM路线
原创 2020-08-18 10:28:51 · 518 阅读 · 2 评论 -
字典树Trie模版——字符串
教程 传送门复杂度分析:在字典树中查询某个字符串s,查询时间复杂度仅与查询的深度有关,而在字典树中查询的深度 与 s的长度k有关,所以每次查询的复杂度为O(k)O(k)O(k)代码#include<iostream>#include<cstring>using namespace std;const int mx_node = 1e6 + 10;const int mx_charset = 26;int trie[mx_node][mx_charset];原创 2020-08-18 09:13:51 · 172 阅读 · 0 评论 -
KMP && exKMP板子——字符串
KMP板子#include<iostream>#include<algorithm>#include<string>#include<cstring>using namespace std;const int MS = 1e5;;#define ll long long void Getnext(int next[], string...原创 2020-04-01 12:33:02 · 1054 阅读 · 1 评论