模板
wineandchord
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
洛谷 P3807 【模板】卢卡斯定理
给 n,m,pn,m,pn,m,p ,求 Cn+mn mod pC_{n+m}^n\bmod pCn+mnmodp ,保证 ppp 为质数Lucas 定理,用来求大组合数取模,定理为:Cnm mod p=C⌊n/p⌋⌊m/p⌋Cn mod pm mod p mod pC_n^m\bmod p=C_{\lfloor n/p\rfloor}^{\lfloor m/p\rfloor}C_{n\bmod p}^{m\bmod p}\bmod pCnmmodp=C⌊n/p⌋⌊m/p⌋Cnmodpmmod原创 2020-06-27 21:18:58 · 175 阅读 · 0 评论 -
洛谷 P3389 【模板】高斯消元法
求解一个线性方程组思路:高斯消元流程:枚举每一列 iii找该列最大值所在的行,将该行和 iii 行进行交换消元,参考代码#include<iostream>#include<cstdio>#include<cmath>#define MAXN 110using namespace std;int n;double a[MAXN][MAXN];int main(){#ifdef WINE freopen("data.in","r",st原创 2020-06-27 20:27:57 · 125 阅读 · 0 评论 -
洛谷 P3377 【模板】左偏树(可并堆)
有 nnn 个小根堆,每个堆只有一个数,进行两种操作:1 x y 将第 x,yx,yx,y 个数分别在的小根堆合并2 x 输出第 xxx 个数所在的的堆的最小数,并将其删除,有多个则删除最先输入的,若第 xxx 个数已删除,则输出 −1-1−1思路:左偏树#include<iostream>#include<cstdio>#define ls s[x].son[0]#define rs s[x].son[1] #define MAXN 100010using n原创 2020-06-27 20:04:01 · 153 阅读 · 0 评论 -
洛谷 P1939 【模板】矩阵加速(数列)
一个数列 aaa ,满足ax={1x∈{1,2,3}ax−1+ax−3x≥4a_x=\begin{cases}1& x\in\{1,2,3\}\\a_{x-1}+a_{x-3}& x\ge 4\end{cases}ax={1ax−1+ax−3x∈{1,2,3}x≥4求 an mod (109+7)a_n\bmod (10^9+7)anmod(109+7)思路:将递推转换为矩阵关系,然后用矩阵快速幂#include<iostream>#includ原创 2020-06-27 17:07:16 · 163 阅读 · 0 评论 -
洛谷 P3390 【模板】矩阵快速幂
给一个矩阵 AAA,求 AkA^kAk思路:矩阵快速幂,注意 k 要 long long#include<iostream>#include<cstdio>#include<cstring>#define M 1000000007#define MAXN 110using namespace std;typedef long long ll;int n;ll k;struct Matrix{ int n;ll a[MAXN][MAXN];原创 2020-06-27 16:44:54 · 124 阅读 · 0 评论 -
洛谷P3385 【模板】负环
SPFA 判负环代码如下:#include<iostream>#include<cstdio>#include<cstring>#include<queue>#define INF 0x3f3f3f3f#define MAXN 2010#define MAXM 6010using namespace std;int n,m,T,u...原创 2020-04-05 22:13:58 · 127 阅读 · 0 评论 -
洛谷 P3865 【模板】ST表
ST 表模板。求静态区间最大值。用 lg[n] 表示 ⌊log2n⌋\lfloor\log_2n\rfloor⌊log2n⌋,预处理出该数组,然后用 st[i][j] 表示区间 [i,i+2j)[i,i+2^j)[i,i+2j) 的最大值,则存在递推关系:st[i][j]=max(st[i][j−1],st[i+2j−1][j−1])st[i][j]=\max(st[i][j-1],s...原创 2020-04-05 18:07:46 · 178 阅读 · 0 评论 -
洛谷 P4779 【模板】单源最短路径(标准版)
求单源最短路径。可以记住的模板有:堆优化的 Dijkstra,Bellman-Ford,SPFA。堆优化的 Dijkstra:算法复杂度为 O(∣E∣⋅Tdk+∣V∣⋅Tem)O(|E|\cdot T_{\text{dk}}+|V|\cdot T_{\text{em}})O(∣E∣⋅Tdk+∣V∣⋅Tem),其中 ∣E∣|E|∣E∣ 是边集大小,∣V∣|V|∣V∣ 是点集大小,TdkT_{...原创 2020-04-05 11:25:36 · 395 阅读 · 0 评论 -
洛谷 P3366 【模板】最小生成树
给一个无向图,求最小生成树,不连通时输出 orz ,连通时输出最小生成树的各边长度之和。两种算法:Prim 和 Kruskal。Prim:算法流程类似 Dijkstra,区别在于 Prim 每次找的是已生成的最小生成树到剩下的点的最小边权,而 Dijkstra 每次找的是源点到剩下的点的最小边权。Kruskal:以边为单位进行操作,每次从边集中取一个最小权值的边,并且该边的两个顶点处于不同的...原创 2020-04-05 08:37:26 · 201 阅读 · 0 评论 -
洛谷 P3368 【模板】树状数组 2
给一个数列,进行以下操作:某区间每个数 +x+x+x求某位置的值区间修改,单点查询。用数组 b 来存放修改产生的差分。代码如下:#include<iostream>#include<cstdio>#define MAXN 500010using namespace std;typedef long long ll;int n,m,t,x,y;ll ...原创 2020-04-04 13:38:05 · 107 阅读 · 0 评论 -
洛谷 P3374 【模板】树状数组 1
给一个数列,进行两种操作:某个数 +x+x+x求区间和和线段树1不同之处在于此题是单点修改,区间查询。树状数组写起来比线段树简单一点,代码如下:#include<iostream>#include<cstdio>#define MAXN 500010using namespace std;int n,m,a[MAXN],b[MAXN],t,x,y;i...原创 2020-04-04 13:24:35 · 122 阅读 · 0 评论 -
洛谷 P3373 【模板】线段树 2
给一个数列,进行三种操作:某区间每个数 ×x\times x×x某区间每个数 +x+x+x求区间和和线段树模板1相比,多了一个乘法操作。要先乘后加。还有注意步步取模…代码如下:#include<iostream>#include<cstdio>#define lc(p) ((p)<<1)#define rc(p) (((p)<<...原创 2020-04-04 09:43:07 · 176 阅读 · 0 评论 -
洛谷 P3372 【模板】线段树 1
已知一个数列,进行以下操作:某区间每个数 +k+k+k求区间和原创 2020-04-03 09:33:13 · 125 阅读 · 0 评论
分享