
模板
HFYRKG
高一OIer
展开
-
【模板】【数论】快速幂和快速乘法
快速幂快速幂取模算法可以在O(log2b)O(log_2b)的时间内求出ab mod pa^b\ mod\ p的值。运用了二进制的思想,实质是对b进行二进制分解。代码:typedef long long LL;LL ksm(int a,int b,int p)//最好不要把函数名取成power、modpower之类的,考试的时候可能会挂233{ LL res=1; while(b原创 2017-08-16 17:45:28 · 769 阅读 · 0 评论 -
【模板】【数论】gcd和exgcd
欧几里得算法:欧几里得定理:gcd(a,b)=gcd(b,amodb)gcd(a,b)=gcd(b,a\;mod\;b)证明:a 可以表示成 a = kb + r(a,b,k,r皆为正整数,且 r < b),则 r = a mod b 假设 d 是 a , b 的一个公约数,记作 d | a , d | b,即 a 和 b 都可以被 d 整除。 而 r = a - kb,两边同时除以 d,r /原创 2017-08-13 11:10:36 · 406 阅读 · 0 评论 -
【模板】【图论】最短路
最近打算整理一下noip范围内的各种板子,就从最短路开始吧。原创 2017-08-12 17:12:26 · 369 阅读 · 0 评论 -
【模板】【数据结构】堆
1.手写小根堆:#include <cstdio>#include <algorithm>#define maxn 1000003using namespace std;int heap[maxn];int tot=0;inline void pushup(int x){ for(;x>0;x>>=1) { if(heap[x]>heap[x>>1])原创 2017-08-15 09:32:03 · 261 阅读 · 0 评论 -
【模板】【图论】最近公共祖先(LCA)
1.树上倍增时间复杂度O(nlogn)O(nlogn) 在线算法#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cstdlib>#include <cmath>using namespace std;const int mxn =500003,mxm =50000原创 2017-08-15 15:50:12 · 338 阅读 · 0 评论 -
【模板】【数据结构】并查集(路径压缩+按秩合并)
int find(int x)//递归版{ return f[x]==x?x:f[x]=find(f[x]);}int find(int x)//非递归版(这可能是我写过的最长的并查集){ int y=x; while(f[y]!=y) y=f[y]; int tmp,rt=y; y=x; while(f[y]!=y)原创 2017-08-15 16:25:46 · 626 阅读 · 0 评论 -
【模板】【数论】高精度
const int MAXN = 10003;const int base = 10000;struct Bigint{ int num[MAXN]; int len,sign; Bigint() {memset(num,0,sizeof(num)); len=1; sign=1;} Bigint operator = (const char *s) {原创 2017-11-05 15:07:31 · 404 阅读 · 0 评论 -
【模板】【代数】矩阵乘法和矩阵快速幂
矩阵乘法定义设A为m*p的矩阵,B为p*n的矩阵,那么称m*n的矩阵C为矩阵A与B的乘积,记作C=ABC=AB,其中矩阵C中的第 i 行第 j 列元素可以表示为:(AB)ij=∑k=1paikbkj=ai1b1j+ai2b2j+⋯+aipbpj(AB)_{ij}=\sum_{k=1}^pa_{ik}b_{kj}=a_{i1}b_{1j}+a_{i2}b_{2j}+\cdots+a_{ip}b_{pj原创 2017-08-16 10:44:13 · 824 阅读 · 0 评论