首页 > 其他分享 >板子

板子

时间:2023-06-19 18:45:13浏览次数:35  
标签:nxt return int len 板子 maxn inline

板子

博主线上考试自己用的板子。

快读

char buf[1<<21],*p1=buf,*p2=buf,obuf[1<<21],*O=obuf;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)

计数题

取模

inline int add(int x){return (x>=mod)?x-mod:x;}
inline void add(int &x,int y){x=add(x+y);return ;}
inline int sub(int x){return (x<0)?x+mod:x;}
inline void sub(int &x,int y){x=sub(x-y);return ;}
inline int power(int x,int b){
	int res=1;
	while(b){
		if(b&1)res=1ll*res*x%mod;
		x=1ll*x*x%mod;
		b>>=1;
	}
	return res;
}

阶乘预处理与组合数

int fc[maxn],ifc[maxn];
inline int binom(int n,int m){
	if(n>m||m<0)return 0;
	return 1ll*fc[n]*ifc[m]%mod*ifc[n-m]%mod;
}
void init(int n){
	fc[0]=1;for(int i=1;i<=n;i++)fc[i]=1ll*fc[i-1]*i%mod;
	ifc[n]=power(fc[n],mod-2);for(int i=n-1;i>=0;i--)ifc[i]=1ll*ifc[i+1]*(i+1)%mod;
	return ;
}

字符串题

SAM

int tot=1,lst=1;
int to[2*maxn][26],len[2*maxn],nxt[2*maxn];
int siz[2*maxn];
void extend(int c){
    int p=lst,u=++tot;
    len[u]=len[p]+1;siz[u]=1;
    while(p&&!to[p][c])to[p][c]=u,p=nxt[p];
    if(!p)nxt[u]=1;
    else{
        int d=to[p][c];
        if(len[d]==len[p]+1)nxt[u]=d;
        else{
            int v=++tot;
            len[v]=len[p]+1;
            for(int i=0;i<26;i++)to[v][i]=to[d][i];
            nxt[v]=nxt[d];nxt[d]=nxt[u]=v;
            while(p&&to[p][c]==d)to[p][c]=v,p=nxt[p];
        }
    }
    lst=u;
    return ;
}

标签:nxt,return,int,len,板子,maxn,inline
From: https://www.cnblogs.com/juju527/p/17491894.html

相关文章

  • 阴阳师藏宝阁链接估号/性价比分析 - 板子酱鉴宝屋
    如果您对藏宝阁的账号价格不够了解,就可能买到低性价比的账号。“板子酱鉴宝屋”就能提供您所需的帮助,用科学的方法让您以合理的价格买到符合心意的账号,以小代价获得更大的收益。快来选择我们的服务吧!如何估价闲鱼号:板子酱鉴宝屋https://m.tb.cn/h.UBOEANq?tk=r5VSdJeyL6SCZ345......
  • FHQ_Treap 板子
    namespaceFHQ{#definesiz(x)({Node*_a_=x;_a_==np?0:_a_->sz;})structNode{ Node*ls,*rs; charval;intpri; intsz; voidupdsz(){ sz=1+siz(ls)+siz(rs); }}cs[N];voidoutput(Node*root){ if(root==np)return; output(root-......
  • ACM板子(1)(缺最短路、计算几何、数学、高级数据结构)
    ACM板子(1)(缺最短路、计算几何、数学、高级数据结构)快排、归并voidquicksort(int*num,intl,intr){if(r<=l)return;intx=l-1,y=r+1,z=num[l+r>>1];while(x<y){dox++;while(num[x]<z);doy--;while(num[y]>z);if(x<y)s......
  • 折腾野火linux板子学到的东西
    添加编译器相关添加交叉工具链,需要修改/etc/profile修改完成后,需要立即生效(不需要重启),可以使用如下命令:source/etc/profile 如果遇到环境变量配置以后,能够找到版本(也就是说输入命令的开头按tab以后能够出现补全),如果还有问题,这是因为64位下运行32编译器缺少相应的库文......
  • KMP板子
    P3426#include<cstdio>#include<cstring>#include<vector>#definesdstd::namespacem{//}constexprintLEN=1e6;sdvector<int>prepare(char*a){ intlen=strlen(a); sdvector<int>ret(len); for(inti=1;a[i];++i......
  • 高精度板子
    百度百科> #include<iostream>#include<vector>#include<string>usingnamespacestd;structwint:vector<int>{wint(intn=0){push_back(n);check();}wint&check()//{while(!empty......
  • 换根 DP 板子
    以前一直以为这玩意是随机应变的。结果还真能总结出板子。当然也有一定的局限性,比如\(dp\)值必须\(O(1)\)算。但不影响正常使用。ins:向\(k\)的子树信息中插入/删除\(nx\)的子树信息。这里的子树在dfs1中是指以\(1\)为根的子树;dfs2中是指以\(k\)为根。recalc......
  • 几个板子
    FHQTreap普通平衡树structtreap{ intl,r,siz,dat,val;}tr[N];intidx,rt;intget_new(intval){ tr[++idx].val=val; tr[idx].dat=rand(); tr[idx].siz=1; returnidx;}voidpushup(intu){ tr[u].siz=tr[tr[u].l].siz+tr[tr[u].r].siz+1;......
  • 线段树区间和,区间修改,区间查询板子
    #include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;#definelson(nd<<1)#definerson(nd<<1|1)#definemid(l+r>>1)constintN=1e5+5;intsum[N<<2],lazy[N<<2];inta[N];voidbuild(intnd,in......
  • 为什么有的板子不用设置arch、cross_compile环境变量
    学习地址......