模板
文章平均质量分 56
A_Comme_Amour
胜利油田第一机房
展开
-
组合数学——信封错装问题
1 问题的提出 1)同室四人各写一张贺年卡,先集中起来,然后每人从中拿一张别人送出的贺年卡.则四张贺年卡的不同分配方式有[ ] A.6种 B.9种 C.11种 D.23种 2)有5个客人参加宴会,他们把帽子放在衣帽寄放室内,宴会结束后每人戴了一顶帽子回家.回家后,他们的妻子都发现他们戴了别人的帽子.问5个客人都不戴自己帽子的戴法有多少种? 上述两个问题,实质上是完全一转载 2017-10-01 12:46:23 · 6011 阅读 · 0 评论 -
KMP模板与详解
原理浅析zyf: 求失配的过程和最后比较的过程差不多,因为每次都是如果不匹配就跳到它失配的位置。 至于为什么是这样,可以想象一下失配也就是说头和尾上的一段字符串是一模一样的,那么我们在头上不停地往前跳,也就相当于在结尾不停地往后跳(自己体会一下)。 KMP一开始看有点晕,你先要知道的是,它是先自己和自己弄,再和大串弄 i是a串(大串)的指针,j是b串(小串)的指针E...原创 2018-02-24 13:41:17 · 282 阅读 · 0 评论 -
[模板]树链剖分讲解与模板
树链剖分的思想比较神奇 它的思想是:把一棵树拆成若干个不相交的链,然后用一些数据结构去维护这些链重儿子:该节点的子树中,节点个数最多的子树的根节点(也就是和该节点相连的点),即为该节点的重儿子 重边:连接该节点与它的重儿子的边 重链:由一系列重边相连得到的链 轻链:由一系列非重边相连得到的链变量声明: son重儿子; tot子树的大小; top该点所在重链头; d...原创 2018-02-27 07:11:03 · 295 阅读 · 0 评论 -
史上第二详尽的平衡树(Splay)详解
谢鸣:本文来自zyf2000学姐的blog,原题为“史上最详尽的平衡树(splay)讲解与模板”,我在这里拿过来使用,命名为“史上第二详尽的平衡树(Splay)详解”,并加上了一些新的操作.变量声明:f[i]表示i的父结点,ch[i][0]表示i的左儿子,ch[i][1]表示i的右儿子,key[i]表示i的关键字(即结点i代表的那个数字),cnt[i]表示i结点的关键字出现的次数(相当于权值)...原创 2018-02-26 21:42:37 · 18420 阅读 · 10 评论 -
【模板】手写堆
#include<cstdio>#include<algorithm>using namespace std;int n,heap[10000000];void swap(int *A,int a,int b){ int temp=A[a]; A[a]=heap[b]; A[b]=temp;}void Heapify(int n,int t)//对根为t的堆维持堆的基本性质 {原创 2017-11-06 13:41:26 · 488 阅读 · 0 评论 -
【模板】并查集
#include<cstdio>using namespace std;int n,m,father[200001];int find(int x){ if (father[x]!=x) return father[x]=find(father[x]); return father[x];}void unionn(int x,int y){ int xx=find(原创 2017-11-06 13:18:11 · 286 阅读 · 0 评论 -
【模板】最小生成树
kruskal:#include<cstdio>#include<algorithm>using namespace std;int n,m,MST,num_edge,father[5001],head[5001];bool b[5001];struct Krus{ int from,to,dis;};Krus krus[200001];struct EDGE{ int原创 2017-11-06 13:17:26 · 268 阅读 · 0 评论 -
【模板】RMQ_ST表
rmq:用来查询区间最值问题 ST(稀疏表):它可以做到O(nlogn)的预处理 O(1)地回答每个询问。 总的时间复杂度O(nlogn+Q) 倍增的思想:f[i][j]表示下标为i的数向上数2^j个数中的最值。#include<cstdio>#include<cmath>#include<algorithm>using namespace std;int n,a[100001],f[1原创 2017-11-04 21:55:34 · 323 阅读 · 0 评论 -
【模板】ksm 快速幂
#include<cstdio>#include<algorithm>using namespace std;#define ll long longll a,n,p;ll ksm(ll a,ll n){ ll s=1; while (n) { if (n&1==1) s*=a; a*=a; n>>=1; }原创 2017-11-04 20:21:17 · 398 阅读 · 0 评论 -
归并排序求逆序对
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int MAXN=400001;int n,a[MAXN],b[MAXN];int ans;void mergesort(int l,int r){ if (l==r) return; int mid=(l+r)/2原创 2017-11-04 12:32:36 · 273 阅读 · 0 评论 -
【模板】lca 最近公共祖先
lca:#include<cstring>#include<algorithm>using namespace std;const int MAXN=500001;int n,m,gen,x,y;struct Edge{ int next,to;}edge[2*MAXN];int deep[MAXN],fa[MAXN][20];//deep记录每个点的深度,fa[i][j]:表原创 2017-11-04 10:29:45 · 388 阅读 · 0 评论 -
【模板】Tarjan
出发前一个小时在颓一波板子void tarjan(int x){ dfn[x]=++num_dfn; low[x]=num_dfn; ifin[x]=true; zhan[++top]=x; for (int i=head[x]; i!=0; i=edge[i].next) { int to=edge[i].to; i原创 2017-11-10 07:01:01 · 319 阅读 · 0 评论 -
【数论板子】_我也就会这些
1、最大公约和最小公倍int gcd(int a,int b) return b==0?a:gcd(b,a%b);int lcm(int a,int b) return a*b/gcd(a,b);2、组合数 注意初始化和边界void find_C(){ for (ll i=0; i<=2000; i++) c[i][0]=c[i][i]=1; for (int i=1; i<原创 2017-11-09 13:07:56 · 347 阅读 · 0 评论 -
【模板】高精度
恶心的高精高精加测试 高精减测试 高精乘测试 低精除测试 高精除测试#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int MAXN=100001;char ch1[MAXN],ch2[MAXN];struct st{ int len,a[MAXN];}a,b;b原创 2017-11-06 13:39:28 · 260 阅读 · 0 评论 -
线段树 学习笔记
懒标记延迟标记的思想 我们的本意是希望把这种标记(如各种要维护的信息,在此称为标记)全部打在叶结点上,这样查询起来就会很轻松。 但是,如果每次维护都将这种标记真实地打在叶结点上,则显然与我们使用线段树的初衷是相违背的,因为复杂度就退化成O(n)的了。 于是,我们还是按照最初的设计,遇到完整的区间就返回。 但是,如果在之后的维护或查询过程中,需要访问这个节点的子节点,则将这个标记下放,传...原创 2018-02-12 14:00:54 · 294 阅读 · 0 评论