
模板
Gh0stCai
这个作者很懒,什么都没留下…
展开
-
[模板] 单源最短路径
迪杰斯特拉 手写堆优化//Writer:GhostCai && His Yellow Duck#include<iostream>#include<cstdio>#include<cstring>#define MAXN 500005using namespace std;struct Node{ int id,w;}node,r;Node hp[MAXN*2+5];long l原创 2017-12-20 23:38:20 · 237 阅读 · 0 评论 -
[模板] LIS
树状数组优化LIS到nlogn,网上找了好多,感觉讲得都不是很明白,正好自己复习整理一下。原创 2018-03-28 13:35:08 · 217 阅读 · 1 评论 -
[模板] 分块
边角暴力,大块整体,好写的暴力数据结构。区间查询,单点修改。(树状数组的活)//Stay foolish,stay hungry,stay young,stay simple#include<iostream>#include<cstdio>#include<cctype>#include<cmath>#define R regis...原创 2018-04-10 17:32:14 · 397 阅读 · 0 评论 -
[模板] Treap
初窥平衡树原创 2018-04-23 15:36:55 · 215 阅读 · 0 评论 -
[模板] 树链剖分
线段树的妙用原创 2018-05-03 02:09:22 · 300 阅读 · 0 评论 -
[模板] 宗法树
详解极其优秀的数据结构:宗法树 代码量小,类似平衡树+线段树的功能(除了LCT都能做),跑得飞快网上没找到太多资料,先写一点原创 2018-05-01 00:34:25 · 1885 阅读 · 0 评论 -
[模板] 主席树
静态版本 求区间第k大可持久化也没那么高大上嘛,主席树本质上就是多棵线段树,求第k大就类似平衡树的第k大。原创 2018-04-28 23:58:57 · 225 阅读 · 0 评论 -
[模板] 网络最大流
dinic算法,在二分图上就是Hopcroft-Karp算法。#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;queue&gt;using namespace std;const int MAXN=1000005;const int INF=1&am原创 2018-05-14 15:12:16 · 233 阅读 · 0 评论 -
[LUOGU] P1316 丢瓶盖
题目描述陶陶是个贪玩的孩子,他在地上丢了A个瓶盖,为了简化问题,我们可以当作这A个瓶盖丢在一条直线上,现在他想从这些瓶盖里找出B个,使得距离最近的2个距离最大,他想知道,最大可以到多少呢?输入输出格式输入格式:第一行,两个整数,A,B。(B<=A<=100000)第二行,A个整数,分别为这A个瓶盖坐标。输出格式:仅一个整数,为所求答案。输入输出样例输入样例#1...原创 2018-06-04 11:42:23 · 311 阅读 · 0 评论 -
[模板] Splay
欠了好久的Splay,以后就它了。 默写真不容易,过几天估计就忘了..#include&amp;amp;amp;lt;iostream&amp;amp;amp;gt;#include&amp;amp;amp;lt;cstdio&amp;amp;amp;gt;using namespace std;inline int rd() { int ret=0,f=1; char c; while(c=getcha原创 2018-06-11 20:12:34 · 231 阅读 · 0 评论 -
[模板] 替罪羊树
更加灵活的“平衡”树原创 2018-04-24 18:34:04 · 205 阅读 · 0 评论 -
[模板] 文艺平衡树
区间翻转,嗯原创 2018-06-14 08:50:31 · 248 阅读 · 0 评论 -
[模板] 判负环
判负环,比SPFA暴力跑更优的方法原创 2018-04-10 14:38:06 · 297 阅读 · 0 评论 -
[模板] KMP算法
fail 失配数组 fail[i]表示以i为结尾的非前缀子串与s的前缀的最大匹配长度//Stay foolish,stay hungry,stay young,stay simple#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int ...原创 2018-03-14 00:34:05 · 200 阅读 · 0 评论 -
[模板] manacher
求回文子串的长度,mp[i]保存以i为中心的回文子串的半径(长度一半) 利用mx和id,避免重复暴力求解,达到O(n)的时间复杂度 预先填充一些无关紧要的字符#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int MAXN=31000000...原创 2018-03-14 00:33:30 · 149 阅读 · 0 评论 -
[模板] 并查集
别忘了路径压缩。#include#include#include#define MAXN 300000using namespace std;int n,m;int fa[MAXN];int fnd(int x){ if(x!=fa[x]) return fa[x]=fnd(fa[x]); return x;}void cat(int x,int y){原创 2018-01-12 17:44:52 · 156 阅读 · 0 评论 -
素数专题
欧拉筛,O(线性) 嗯。//Writer:GhostCai && His Yellow Duck#include<iostream>#define MAXN 200000using namespace std;int prime[MAXN];bool istprime[MAXN];void makePrime(int num){ int cnt=0; istprime[1]原创 2018-01-04 01:16:10 · 287 阅读 · 0 评论 -
[模板] 快速幂
二进制处理int poww(int a,int b){ int ans=1,base=a; while(b!=0){ if(b&1!=0) ans*=base; base*=base; b>>=1; } return ans;}原创 2018-01-04 01:28:14 · 224 阅读 · 0 评论 -
[模板] 拓扑排序
输出一条路径#include#include#include#define MAXN 200000using namespace std;int m,n; int in[MAXN];struct Edge{ int next,to;}e[MAXN];int ecnt,head[MAXN];inline void add(int x,int y){ e原创 2018-01-12 17:49:13 · 171 阅读 · 0 评论 -
[模板] 中国剩余定理
[证明] 待补充//Writer:GhostCai && His Yellow Duck#includeusing namespace std;int exgcd(int a,int b,int &x,int &y){ if(b==0){ x=1,y=0; return a; } int gcd=exgcd(b,a%b,原创 2018-01-12 17:52:46 · 186 阅读 · 0 评论 -
[模板] 强连通分量
tarjan (讲道理信息传递就是这样的?)#include#include#include#include#include#define MAXN 20000using namespace std;int m,n;int ecnt,head[MAXN];struct Edge{ int next,to;}e[MAXN];inline void add(in原创 2018-01-12 18:10:20 · 223 阅读 · 0 评论 -
[模板] 线段树
最规整的版本。 玩火需谨慎(&amp;)//Writer:GhostCai &amp;&amp; His Yellow Duck#include&lt;iostream&gt;using namespace std;const long long MAXN=200005;long long n,m;long long a[MAXN];struct Node{ ...原创 2018-02-09 21:27:52 · 190 阅读 · 0 评论 -
[模板] 匈牙利算法
二分图匹配,寻找增广路。 洛谷这个模板题真的毒瘤。#include<iostream>#include<cstdio>#include<cstring>#define R registerusing namespace std;const int MAXN=1000005;inline int read_d(){ int s=0;...原创 2018-03-06 22:31:05 · 155 阅读 · 0 评论 -
[模板] ST表
ST表,O(nlogn)预处理,O(1)求区间最值 线段树也能解决,而且支持动态修改,但是对于不修改的序列,线段树查询logn,要慢4用f[i][j]表示一个区间[i,2^j] 利用倍增 f[i][j]=____(f[i][j-1],f[1+2^(j-1)][j-1]) 也就是拆分成两段,预处理查询也是拆分,拆分成两段可以重叠的部分,求最值不影响 拆分的长度是2^l,l=log2...原创 2018-02-21 21:29:56 · 208 阅读 · 0 评论 -
[模板] 树状数组
用lowbit二分构造tree,巧妙 这就是我想了很久却写不出的Sylvia..【❤】//Writer:GhostCai && His Yellow Duck#includeusing namespace std;const int MAXN=1000000;int n,q;int tree[MAXN];int lb(int x){ return x&(-x);原创 2018-01-29 00:26:52 · 189 阅读 · 0 评论 -
[模板] LCA
离线tarjan(dfs) 链式前向星从1开始存,免了赋-1初值,方便异或运算,好处多多。 并查集fa数组的初始化可以写入dfs中顺便执行,少一个大循环。数组要开大,不然会报WA,可能它在乱搜吧。//Writer:GhostCai && His Yellow Duck#include#include#includeusing namespace std;const i原创 2018-01-27 22:11:03 · 195 阅读 · 0 评论 -
[模板] 最小生成树
克鲁斯卡尔 很好的一个处理方式是 间接排序也就是通过在另一个数组排序号,保留原始数据。#include#include#include#define MAXN 200000using namespace std;int m,n,ans;int u[MAXN],v[MAXN],w[MAXN],id[MAXN];int fa[MAXN];int fnd(int x){原创 2018-01-12 17:42:24 · 151 阅读 · 0 评论 -
[模板] AC自动机
多个串的匹配原创 2018-06-25 20:48:01 · 272 阅读 · 0 评论