模板
DoIdo~
这个作者很懒,什么都没留下…
展开
-
模板——gcd
#include<iostream>using namespace std;typedef long long ll;ll gcd(ll a, ll b) { return !b ? a : gcd(b, a % b); }int main() { ll a, b; cin >> a >> b; cout << gcd(a, b); return 0;}原创 2020-05-22 20:56:20 · 295 阅读 · 0 评论 -
模板——高斯消元
#include<cmath>#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;const int N = 110;const double eps = 1e-6;int n;double u[N][N];int gauss() { int x, y; for (y = 1, x = 1; y <= n; y++) { int原创 2020-07-21 12:58:36 · 125 阅读 · 0 评论 -
模板——exCRT
#include<iostream>using namespace std;typedef long long ll;const int N = 1e6 + 10;int n;ll b[N], p[N];ll gcd(ll a, ll b) { return !b ? a : gcd(b, a % b); }ll exgcd(ll a, ll b, ll& x, ll& y) { if (b == 0) { x = 1, y = 0; return原创 2020-06-05 02:20:43 · 134 阅读 · 0 评论 -
模板——CRT(中国剩余定理)
讲解#include<iostream>using namespace std;typedef long long ll;const int maxn = 100;int n;//b[i]为余数 p[i]为模数ll b[maxn], p[maxn];//扩欧模板ll exgcd(ll a, ll b, ll& x, ll& y) { if (b == 0) { x = 1, y = 0; return a; } ll g = exgcd.原创 2020-06-01 17:38:47 · 241 阅读 · 1 评论 -
模板——OJ题版
文章目录数论排序高精度字符串数据结构组合数学复数数论gcdBSGSexgcdexBSGS整除分块线性筛欧拉函数线性筛莫比乌斯函数排序堆排序归并排序快速排序高精度高精度加法高精度减法高精度乘法字符串KMP搜索ManacherKMP(Next数组的初始化(版本一))KMP(Next数组的初始化(版本二))数据结构ST表之最大值问题一维树状数组之求和(区间修改,区间查询)二维树状数组之求和(区间修改,区间查询)线段树之最大值问题(单点修改,区间原创 2020-05-23 12:58:48 · 343 阅读 · 0 评论 -
模板——exgcd
#include<iostream>using namespace std;typedef long long ll;ll exgcd(ll a, ll b, ll& x, ll& y) { if (b == 0) { x = 1, y = 0; return a; } ll g = exgcd(b, a % b, y, x); y -= a / b * x; //返回值是最大公约数 return g;}int main() { ll a,原创 2020-05-22 21:11:05 · 295 阅读 · 0 评论 -
模板——ST表之最大值问题
#include<iostream>#include<algorithm>using namespace std;typedef long long ll;const int maxn = 1e6 + 10;int st[maxn][21]; //st[i][j]表示从第i位计数,共2的j次方的数的最大值 //比如st[1][2]表示1,2,3,...原创 2020-05-22 14:45:48 · 400 阅读 · 0 评论 -
模板——一维树状数组之求和(区间修改,区间查询)
#include<iostream>using namespace std;typedef long long ll;const int maxn = 1e6 + 10;int n, m;ll u[maxn];ll t1[maxn];ll t2[maxn];ll lowbit(ll x) { return x & (-x);}void Update(...原创 2020-05-22 14:45:40 · 185 阅读 · 0 评论 -
模板——二维树状数组之求和(区间修改,区间查询)
#include<iostream>using namespace std;typedef long long ll;const int N = 2100;ll n, m;ll t1[N][N], t2[N][N];ll t4[N][N], t3[N][N];ll lowbit(ll x) { return x & (-x); }void Update(...原创 2020-05-22 14:45:30 · 231 阅读 · 0 评论 -
模板——线段树之最大值问题(单点修改,区间查询)
#include<string>#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;const int maxn = 1e5 + 10;int pos[maxn];struct tree { int l, r; int val;}t...原创 2020-05-22 14:45:19 · 209 阅读 · 0 评论 -
模板——Lucas(大组合数取模)
#include<iostream>using namespace std;typedef long long ll;const int maxn = 1e6 + 7;ll n, m, p;ll fac[maxn];void init_fac() { //阶乘打表 fac[0] = 1; for (ll i = 1; i <= p; i++) { f...原创 2020-05-22 14:44:48 · 244 阅读 · 0 评论 -
模板——快速傅里叶变换(递归)
#include<cmath>#include<iostream>#include<algorithm>using namespace std;const double PI = acos(-1);const int N = 1e6 + 10;struct Complex{ double R, I; Complex() { R = 0.0,...原创 2020-05-22 14:44:23 · 1716 阅读 · 0 评论 -
模板——快速傅里叶变换(迭代版本)
#include<cmath>#include<iostream>#include<algorithm>using namespace std;const double PI = acos(-1);const int N = 1e6 + 10;//复数结构体struct Complex { double R, I; Complex() { ...原创 2020-05-22 14:44:09 · 507 阅读 · 0 评论 -
模板——KMP(Next数组的初始化(版本二))
#include<string.h>#include<iostream>using namespace std;typedef long long ll;const int maxn = 1e6 + 10;int Next[maxn] = { 0 }; //Next的第0位只有一个字符char str[maxn], mo[maxn];void get_...原创 2020-05-22 14:43:44 · 185 阅读 · 0 评论 -
模板——KMP(Next数组的初始化(版本一))
#include<iostream>using namespace std;typedef long long ll;const int maxn = 1e6 + 10;int Next[maxn];void Build_Next(char* p, int n) { Next[0] = 0; int len = 0; int i = 1; while (i &l...原创 2020-05-22 14:43:27 · 182 阅读 · 0 评论 -
模板——Manacher
#include<string.h>#include<iostream>#include<algorithm>using namespace std;const int maxn = 2e6 + 10;int n; //提前记录字符串的长度,减少复杂度char s[maxn]; //输入的字符串int len[maxn]; //在i出最大...原创 2020-05-22 14:43:15 · 165 阅读 · 0 评论 -
模板——KMP搜索
#include<iostream>using namespace std;typedef long long ll;const int maxn = 1e6 + 10;int n, m;int Next[maxn]; //含义: 从第0位到第i位的字串的最大公共前后缀char Mo[maxn], Te[maxn]; //含义: Mo是模式串,Te是匹配的串//...原创 2020-05-22 14:43:01 · 160 阅读 · 0 评论 -
模板——高精度乘法
#include<string>#include<iostream>using namespace std;const int maxn = 1e6 + 10;int n, m;string s1, s2;int a[maxn], b[maxn], ans[maxn];void Mul() { for (int i = n - 1, j = 1; i ...原创 2020-05-22 14:42:42 · 267 阅读 · 0 评论 -
模板——高精度减法
#include<string>#include<iostream>using namespace std;const int maxn = 1e6 + 10;int n, m;string s1, s2;int a[maxn], b[maxn], ans[maxn];void Sub() { for (int i = n - 1, j = 1; i ...原创 2020-05-22 14:42:29 · 195 阅读 · 0 评论 -
模板——高精度加法
#include<string>#include<iostream>#include<algorithm>using namespace std;const int N = 1e6 + 10;int n, m, mx;string s1, s2; //字符串模拟int a[N], b[N], ans[N]; //a为第一个数,b为第二个数,...原创 2020-05-22 14:42:08 · 227 阅读 · 0 评论 -
模板——快速排序
#include<iostream>using namespace std;typedef long long ll;const int maxn = 1e6 + 10;int u[maxn];void quick_sort(int* p, int l, int r) { if (l >= r) return; int i = l - 1, j = r + 1...原创 2020-05-22 14:41:13 · 172 阅读 · 0 评论 -
模板——归并排序
void merge_sort(int* p, int l, int r) { if (l >= r) return; int mid = l + r >> 1; merge_sort(p, l, mid); merge_sort(p, mid + 1, r); int i = l, j = mid + 1, k = 0; while (i <= mid &...原创 2020-05-22 14:41:02 · 185 阅读 · 0 评论 -
模板——堆排序
#include<iostream>#include<algorithm>using namespace std;const int maxn = 1e6 + 10;int u[maxn];void heapify(int* tree, int n, int i) { if (i >= n + 1) return; int c1 = 2 * i;...原创 2020-05-22 14:40:50 · 195 阅读 · 0 评论 -
模板——线性筛莫比乌斯函数
待续…原创 2020-05-22 14:40:28 · 178 阅读 · 0 评论 -
模板——线性筛欧拉函数
#include<iostream>const int maxn = 1e6 + 10;int prime[maxn], cnt;bool vis[maxn];int phi[maxn];void init_Euler(const int n = 1e6) { for (int i = 2; i <= n; i++) { if (!vis[i]) { ...原创 2020-05-22 14:38:14 · 169 阅读 · 0 评论 -
模板——整除分块
#include<iostream>using namespace std;int main() { int n; cin >> n; int ans = 0; for (int l = 1, r = 1; l <= n; l = r + 1) { int val = n / l; r = n / val; ans += (r - l +...原创 2020-05-22 14:37:59 · 173 阅读 · 0 评论 -
模板——exBSGS
讲解#include<cmath>#include<iostream>#include<unordered_map>using namespace std;typedef long long ll;ll phi(ll p) { ll res = p; for (ll i = 2; i * i <= p; i++) { if (p % i == 0) { res -= res / i; while (p % i == 0) p .原创 2020-05-22 14:37:44 · 133 阅读 · 0 评论 -
模板——BSGS
void init(int a, int b, int p, int m) { for (int i = 0; i < m; i++) { ll temp = quick_pow(a, i, p); mp[(temp * b) % p] = i; }}int BSGS(int a, int b, int p) { mp.clear(...原创 2020-05-22 14:37:21 · 204 阅读 · 0 评论