矩阵乘法 二维 乘 二维 void mul(vector<vector<ll>>& c, vector<vector<ll>> a, vector<vector<ll>> b, int p) { int n = a.size(); for (int i = 0; i &…
取模模板类 #define LL long long template<const int T> struct ModInt { const static int mod = T; int x; ModInt(int x = 0) : x(x % mod) {} int val() { return x; } ModInt operat…
理论 模板 #define ll long long inline ll V2IDX(ll v, ll N, ll Ndr, ll nv) { return v >= Ndr ? (N/v - 1) : (nv - v); } ll primesum(ll N) { //求取1~N的所有质数和 ll *S; ll *V; ll r = (ll…
加 + plus e.g. 1 + 1 = 2 one plus one equals two 减 - minus e.g. 2 - 1 = 1 two minus one equals one 乘 x multiplied by x times e.g. 2 x 2 = 4 two times two equals four 除 ÷ divide…
原理 ST表:又名稀疏表,预处理 NlogN,单次查询 1,时间复杂度:O(NlogN + M) ST[p][i] 代表从 i 点开始共 2 ^ p 个数的最大值,即 [i, i + 2 ^ p - 1] 区间的最大值 实现 void ST(){ for(int i = 1; i <= n; i ++) st[0][i] = x[i]; in…
动态开点线段树原理 例题 1 统计区间中的整数数目 #define ls(x) tr[x].L #define rs(x) tr[x].R class CountIntervals { static const int N = 8e5 + 5; struct node{ int l, r, cnt = 0; int L = -1, R = -1; …
基本数据结构 单链表 // head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点 int head, e[N], ne[N], idx; // 初始化 void init() { head = -1; idx = 0; } // 在链表头插入一个数a void insert(int a) { e[id…
图的存储 邻接矩阵 int g[N][N]; 链式前向星 // 头插邻接表 N 为点数, M 为点数 int h[N], e[M], w[M], ne[M], idx; void add(int a, int b, int c) { // 插入一条从 a 指向 b 的边,权值为 c e[idx] = b; w[idx] = c; ne[idx] =…
欢迎使用WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!