模板
文章平均质量分 53
QAQwdd
这个作者很懒,什么都没留下…
展开
-
离散化模板
离散化是个好东西…void discrete(){ sort(a + 1, a + n + 1); for(int i = 1; i <= n; i++) if(i == 1 || a[i] != a[i - 1]) b[++cnt] = a[i];// 也可用STL中的unique函数 cnt = unique(a + 1, a + n...原创 2018-08-04 16:18:53 · 221 阅读 · 0 评论 -
邻接表模板
数组 fir[N]:记录该点到达的第一条边 nxt[M]:记录下一条边(为了方便枚举与一个点相连的所有边) to[M]:记录该条边所到达的点 len[M]:记录该条边的权值代码 memset(fir,-1,sizeof(fir));//初始化void add(int a,int b,int c){//a->b len[cnt]=c;//第原创 2018-02-05 18:27:12 · 347 阅读 · 1 评论 -
LuoguP3807 【模板】卢卡斯定理 Lucas+费马小定理求逆元
Lucas定理:Cmn=C⌊m%p⌋⌊n%p⌋∗Cm/pn/pCnm=C⌊n%p⌋⌊m%p⌋∗Cn/pm/pC_{n}^{m} = C_{\lfloor n\%p \rfloor}^{\lfloor m\%p \rfloor} *C_{n/p}^{m/p}具体计算组合数时,由于涉及到除法取模,所以可以用费马小定理求逆元。 由于gcd(a,p)=1gcd(a,p)=1gcd(a, p) =...原创 2018-08-05 15:10:49 · 223 阅读 · 0 评论 -
快速幂与快速乘模板
快速幂与快速乘,都运用到了一个定理:每一个正整数都能唯一表示为2的次幂的和。 即:不同的数的二进制表达形式唯一。因此a^b 可以转化为几个a^2^i相乘。 又由于a^2^i = (a^2^(i - 1))^2,所以可以递推求出每个a^2^i。int Pow(int a, int b, int p){ int ans = 1, base = a; while(b){...原创 2018-08-02 11:46:45 · 274 阅读 · 0 评论 -
BSGS模板
BSGS即baby step, giant step,用于求解形如ax≡b(modp)ax≡b(modp)a^{x} ≡ b \pmod{p}的方程。 具体做法:设x=i∗t−jx=i∗t−jx = i * t - j,则方程变为ai∗t≡b∗aj(modp)ai∗t≡b∗aj(modp)a^{i * t} ≡ b * a ^ {j}\pmod{p}。先把每个b∗aj(modp)b∗aj(mod...原创 2018-08-20 21:30:24 · 305 阅读 · 0 评论 -
堆模板
一些堆的总结1.二叉堆 这个是最简单的堆,用于维护最大最小值。支持删除,弹出堆顶节点,查询最大值(或优先级最高的节点)#include<cstdio>#include<algorithm>using namespace std;const int MAXN = 1原创 2018-08-31 11:01:10 · 438 阅读 · 0 评论 -
树链剖分模板
啃了好久,终于把树链剖分给啃下来了前置知识:dfs序,lca,线段树等算法思想:把树拆成一条一条的链,然后用数据结构维护。首先定义几个概念:子树大小:以某一节点为根节点的子树中节点的总数,包括该点。重节点:在某一节点的所有子节点中,子树大小最大的节点。轻节点:不是重儿子的节点。特殊的,根节点是轻节点。重链:重节点依次相连形成的链。具体实现:以洛谷 3384 【模板】树链剖分 ...原创 2018-10-05 21:28:48 · 212 阅读 · 0 评论