![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模板
文章平均质量分 68
LauZiyang
exploring
展开
-
模板 (带注释)不带旋转的树堆(可持久化)Treap
const int N=2e5; const int INF=1e9+7; int cnt=0; int root; int lc[N]={0}; int rc[N]={0}; int val[N]={0};//键值为多少。 int siz[N]={0}; int fix[N]={0};//稳定函数,目的是让这颗平衡树比较平衡。 int s[N]={0};//平衡树是要按照当前键值建树的所以有...原创 2018-03-21 15:22:59 · 171 阅读 · 0 评论 -
省选专练(学习)Fleury算法
说白了就是一个暴力 由于如果知道了存在欧拉回路任意一个点任意一条边开始都能找到答案 如果是找一张图的欧拉路 注意可以有连个奇数度数的情况,但是也能不判就跑过了(我不知道为什么我的Fleury这么优秀) 而且还有一个神仙优化:当前弧优化(6666)我咋这么菜呢 显而易见是吧 #include<iostream> #include<cstdio> #inclu...原创 2018-08-13 16:40:56 · 150 阅读 · 0 评论 -
省选专练(学习)可持久化Trie树(BZOJ3261)
这个似乎也不是好难啊 但是可持久化Trie还是可以干许多线性基不能干的事。 什么是可持久化Trie? 顾名思义:是一种可以持久化的Trie树 他的建树方式和键值式线段树方式类似 也支持版本的减法 查询的本质是贪心: 利用版本减法判断第K位上的Trie值是不是成立 以此向下查询 #include<bits/stdc++.h> using namespace std...原创 2018-07-21 16:32:22 · 185 阅读 · 0 评论 -
省选专练(学习)后缀自动机SAM(超详细)
This is a SAM for string acadd 先谈我对后缀自动机的理解: 误解1:后缀自动机是识别字符串所有后缀的东西 这不完全正确,它可以识别所有子串,于是也可以识别所有后缀 误解2:这是一个nlogn的算法。 错误后缀自动机极限时间复杂度是O(n*2-1)比SA和S tree优 然后是后缀自动机可以干什么: 可以求LCS 什么?你说把他转成LIS跑nlogn...原创 2018-07-21 07:56:34 · 283 阅读 · 0 评论 -
省选专练(学习)AC自动机
我好菜啊 AC自动机都不会 AC自动机可以干什么: 用一个模板串匹配多个子串。 这便让AC自动机可以干许多KMP和Tri树不能干的事。 AC自动机的构造 首先建立一颗Trie树。 其次利用KMP的思想(Trie树上明显有许多重复的子路径) 建立一条Fail边 使得这些子路径没有白跑。 #include<bits/stdc++.h> using namespace ...原创 2018-07-19 07:50:12 · 241 阅读 · 1 评论 -
模板-线性基求异或最大值
注意:线性基的本质是解异或方程组它与高斯消元的本质区别是:没有回代,于是可以在log情况下求出最大值于是怎么搞?Insert表示插入,原理是把每个数映射进数组,是原数集的异或集,可以理解用On的线性空间压制了一个On^2的东西。那么查询最大值就是按位贪心。从大到小,因为高位只是表示是否存在这一位,并不表示只有这一种。和异或高斯消元的求可达性是本质如一的。注意!!!!由于常量数(1啊,233啊,99...原创 2018-04-04 15:35:45 · 803 阅读 · 0 评论 -
模板-LCA
int dep[N]={}; int dis[N]={}; int f[N][30]={}; void dfs(int u,int fat){ f[u][0]=fat; for(int i=1;i<=20;i++)f[u][i]=f[f[u][i-1]][i-1]; for(int i=first[u];i;i=e[i].nxt){ int v=e[i].v; if(v!=fa...原创 2018-04-03 18:37:58 · 128 阅读 · 0 评论 -
模板SPFA-DFS判断负环
int flag=0; int dis[N]={}; int vis[N]={}; void Clr(){ memset(dis,0,sizeof(dis)); memset(vis,0,sizeof(vis)); memset(first,0,sizeof(first)); cnt=1; flag=0; } void SPFA(int u){ vis[u]=1; for(int i...原创 2018-04-03 18:32:41 · 530 阅读 · 1 评论 -
模板并查集
int fa[N]={0}; int getfa(int x){ if(fa[x]==x)return x; return fa[x]=getfa(fa[x]); } int merge(int x,int y){ int dx=getfa(x); int dy=getfa(y); fa[dx]=dy; } // for(int i=1;i<=n;i++)fa[i]=i;原创 2018-04-03 18:31:49 · 108 阅读 · 0 评论 -
模板最小生成树-Prime
struct Node{ int u,w; }; int vis[N]={}; priority_queue<Node> q; bool operator <(Node A,Node B){ return A.w>B.w; } int prim(){ int ret=0; q.push((Node){1,0}); while(!q.empty()){ ...原创 2018-04-02 19:53:59 · 232 阅读 · 0 评论 -
模板 左偏树/可并堆
struct Leftist_Tree{ int lson[N]; int rson[N]; int root[N]; int dis[N]; int siz[N]; long long mullazy[N]; long long addlazy[N]; struct message{ int fa,val; }a[N]; void pushnow(long lon...原创 2018-03-21 20:10:59 · 122 阅读 · 0 评论 -
模板 向量
const double INF=1e16; const double eps=1e-8; const int N=60000; struct Point{ double x,y; Point(double _x=0,double _y=0):x(_x),y(_y){} friend Point operator +(Point A,Point B){return Point(A.x+B.x...原创 2018-03-21 20:09:24 · 147 阅读 · 0 评论 -
EXCRT/扩展中国剩余定理学习笔记
当a1,a2a_{1},a_{2}a1,a2互质的时候 我们可以使用中国剩余定理合并 即∑ibi∗(Mai∗Inv(Mai))\sum_{i}b_{i}*(\frac{M}{a_{i}}*Inv_{(\frac{M}{a_{i}})})∑ibi∗(aiM∗Inv(aiM)) 其中M=∏iaiM=\prod_{i}a_{i}M=∏iai 但是不同于别的定律 从CRT到EXCR...原创 2018-10-09 07:55:10 · 219 阅读 · 0 评论