模板
BAJim_H
比孤独更可悲的事情,就是根本不知道自己很孤独,或者分明很孤独,却把自己都骗得相信自己不孤独。
展开
-
一些常用算法的代码(1)
为了简洁,部分算法我只贴函数或过程KMPint kmp(string s1,string s){ int i,j=0; long long ans=0; next[1]=0; fo(i,2,m) { while (j>0&&t[j]!=t[i-1]) j=next[j]; if (t[j]==t[i-1]) j++;原创 2016-04-15 19:40:48 · 747 阅读 · 0 评论 -
【模板】非旋转Treap
Code#include <cstdio>#include <cstdlib>#include <iostream>#include <algorithm>#include <cmath>#include <cstring>#define fo(i,a,b) for(int i=a;i<=b;++i)#d...原创 2018-11-29 17:07:34 · 220 阅读 · 0 评论 -
点双联通分量,圆方树和广义圆方树
点双联通分量边双联通分量想必看这篇博客的同学就会,并且边双联通分量理解和打起来比较简单,就不再赘述了。点双联通分量,类比边双的定义,它是原图的极大无向子图,满足删去子图中任意一个节点以及与其相邻的边,其余节点仍然连通。如下图,左中两个均为一个点双联通分量,但最右边图中有两个点双联通分量(上下两部分),因为删去中间的点后他们不能联通由最右边的图可以看出,一个点可能属于多个点双联通分量,我们...原创 2018-10-16 17:19:28 · 712 阅读 · 0 评论 -
多项式系列模板
FFTstruct Z{ double x,y; Z(double _x=0,double _y=0):x(_x),y(_y){};};Z operator +(Z x,Z y) {return Z(x.x+y.x,x.y+y.y);}Z operator -(Z x,Z y) {return Z(x.x-y.x,x.y-y.y);}Z operator *(Z ...原创 2018-04-23 15:07:58 · 726 阅读 · 0 评论 -
后缀自动机(SAM)模板
Code单串SAMvoid make(){ int last=1; fo(i,1,n) { int p=last,c=ch[i]-'A'; mx[last=++tot]=i; while(p&&!t[p][c]) t[p][c]=ls,p=fail[p]; if(p) ...原创 2017-12-07 17:09:11 · 447 阅读 · 0 评论 -
ZKW费用流 模板
Text普通的费用流需要每增广一次,再用最短路算法更新距离。而ZKW则是在增广结束后直接倒回修改标号实际上,ZKW可以看作SAP的高度标号改成了距离标号,一个点的标号就是它到汇点的最短路距离SAP是在增广时不断修改,ZKW则是在一次增广后进行修改,只修改访问过的点,并且以其中最小的一个增量更新所有点。一次增广完成后,这条路径的长度就是当前源点的距离标号Codeint zkw(int k,int l)原创 2017-10-26 21:22:06 · 320 阅读 · 0 评论 -
【C++ STL】黑科技(不断更新)
Perface因为本人比较弱,所以把一些用过的黑科技总结一下啦。Priority_queue(重构小根堆)#include <cstdio>#include <cstdlib>#include <algorithm>#include <iostream>#include <cstring>#include <cmath>#include <queue>#define fo(i,a,b)原创 2016-11-17 12:50:35 · 1148 阅读 · 0 评论 -
一些常用算法的代码(2)
主席树void build(int lst,int now,int l,int r,int v){ if(l==r) { tr[now].sm=tr[lst].sm+1; return; } int mid=(l+r)/2,lts=tr[lst].ls,rts=tr[lst].rs; if (v<=mid) tr[now].原创 2016-07-14 16:38:52 · 373 阅读 · 0 评论 -
【GDOI2016】最长公共子串 题解
Description给你两个字符串S,TS,T 给你NN个区间,SS串中这些区间内的字符可以随意改变在区间中的位置。 求S,TS,T可以达到的的最长公共子串长度Solution注意,公共子串是必须连着的(坑死我了)可以发现,只要两个区间有可以重叠的地方,就可以把这两个区间合并成一个区间。那么就可以把原本100000100000的区间个数降到20002000以下我们需要记录一下每个区间中每种字符原创 2016-05-19 12:37:05 · 654 阅读 · 0 评论 -
[BZOJ1036][JZOJ2256]【ZJOI2008】树的统计(树链剖分模板)
Description一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的节点包括u原创 2016-05-20 21:13:54 · 702 阅读 · 0 评论 -
后缀数组(SA)模版
#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<iostream>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fod(i,a,b) for(i=a;i>=b;i--)using namespace std;原创 2016-05-13 20:45:22 · 648 阅读 · 0 评论 -
【数论模板】二次剩余Cipolla算法,离散对数BSGS 算法
CipollaLL ksm(LL k,LL n){ LL s=1; for(;n;n>>=1,k=k*k%mo) if(n&1) s=s*k%mo; return s;}namespace number{ LL D; struct Z { LL x,y; Z(LL _x=0,LL _y=0){x=_x,y=_y;} }; Z operator...原创 2019-05-09 11:28:10 · 301 阅读 · 0 评论