
模板
文章平均质量分 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 · 198 阅读 · 0 评论 -
省选专练(学习)Fleury算法
说白了就是一个暴力由于如果知道了存在欧拉回路任意一个点任意一条边开始都能找到答案如果是找一张图的欧拉路注意可以有连个奇数度数的情况,但是也能不判就跑过了(我不知道为什么我的Fleury这么优秀)而且还有一个神仙优化:当前弧优化(6666)我咋这么菜呢显而易见是吧#include<iostream>#include<cstdio>#inclu...原创 2018-08-13 16:40:56 · 174 阅读 · 0 评论 -
省选专练(学习)可持久化Trie树(BZOJ3261)
这个似乎也不是好难啊但是可持久化Trie还是可以干许多线性基不能干的事。什么是可持久化Trie?顾名思义:是一种可以持久化的Trie树他的建树方式和键值式线段树方式类似也支持版本的减法查询的本质是贪心:利用版本减法判断第K位上的Trie值是不是成立以此向下查询#include<bits/stdc++.h>using namespace std...原创 2018-07-21 16:32:22 · 234 阅读 · 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 · 332 阅读 · 0 评论 -
省选专练(学习)AC自动机
我好菜啊AC自动机都不会AC自动机可以干什么:用一个模板串匹配多个子串。这便让AC自动机可以干许多KMP和Tri树不能干的事。AC自动机的构造首先建立一颗Trie树。其次利用KMP的思想(Trie树上明显有许多重复的子路径)建立一条Fail边使得这些子路径没有白跑。#include<bits/stdc++.h>using namespace ...原创 2018-07-19 07:50:12 · 300 阅读 · 1 评论 -
模板-线性基求异或最大值
注意:线性基的本质是解异或方程组它与高斯消元的本质区别是:没有回代,于是可以在log情况下求出最大值于是怎么搞?Insert表示插入,原理是把每个数映射进数组,是原数集的异或集,可以理解用On的线性空间压制了一个On^2的东西。那么查询最大值就是按位贪心。从大到小,因为高位只是表示是否存在这一位,并不表示只有这一种。和异或高斯消元的求可达性是本质如一的。注意!!!!由于常量数(1啊,233啊,99...原创 2018-04-04 15:35:45 · 854 阅读 · 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 · 143 阅读 · 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 · 602 阅读 · 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 · 122 阅读 · 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 · 261 阅读 · 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 · 141 阅读 · 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 · 165 阅读 · 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 · 269 阅读 · 0 评论