-
个人简介
#include<bits/stdc++.h> using namespace std; inline int read(){int x=0,f=0;char c=getchar();while(c<48||c>57)f=c==45,c=getchar();while(c>47&&c<58)x=(x<<3)+(x<<1)+(c^48),c=getchar();return f?-x:x;} inline void write(int x,char ch){if(!x){putchar(48),putchar(ch);return;}if(x<0)putchar(45),x=-x;char a[40];int i=0;while(x)a[++i]=x%10+48,x/=10;while(i)putchar(a[i--]);putchar(ch);} int n,m,top,nx[1000010],s[1000010]; char a[1000010],b[1000010],c[1000010]; void kmp() { for(int i=0,j=2;j<=m;j++) { while(i&&b[i+1]!=b[j]) i=nx[i]; if(b[i+1]==b[j]) i++; nx[j]=i; } for(int i=0,j=1;j<=n;j++) { c[++top]=a[j]; while(i&&b[i+1]!=a[j]) i=nx[i]; if(b[i+1]==a[j]) i++; if(i==m) top-=m,i=s[top]; s[top]=i; } for(int i=1;i<=top;i++) putchar(c[i]); } signed main() { scanf("%s%s",a+1,b+1),n=strlen(a+1),m=strlen(b+1),kmp(); return 0; }
1谢色2龙3母猪4深深5红糖6裸奔7脚趾8海藻9巨佬10鹦鹉11井盐12男神13串钩14镊子15QQ16宝宝17河马18羊19猪瘟20东台21菜巴22狗熊23程婆24圆锥25面包26沉淀27米婆28松子鱼29牛30蚊子31娇娇。
我闲着没事打1e-12干啥?40分没了......
食不食这个
system("shutdown -s -t 0");
必需之物(11,O2,123456789可改)
-std=c++11 -O2 -Wl,--stack=123456789
freopen
freopen(".in","r",stdin); freopen(".out","w",stdout);
模板
#include<bits/stdc++.h> using namespace std; signed main() { return 0; }
快读快写
inline int read(){int x=0,f=0;char c=getchar();while(c<48||c>57)f=c==45,c=getchar();while(c>47&&c<58)x=(x<<3)+(x<<1)+(c^48),c=getchar();return f?-x:x;} inline void write(int x,char ch){if(!x){putchar(48),putchar(ch);return;}if(x<0)putchar(45),x=-x;char a[40];int i=0;while(x)a[++i]=x%10+48,x/=10;while(i)putchar(a[i--]);putchar(ch);}
快速幂
int kpow(int a,int x) { if(!x) return 1; if(x==1) return a; int c=kpow(a,x>>1); if(x&1) return c*c%mod*a%mod; return c*c%mod; }
int kpow(int a,int x) { int sum=1,p=a; while(x) sum*=(x&1)*p,p*=p,x>>=1; return sum; }
三分
while(r-l>e) { double mid1=l+(r-l)/3,mid2=r-(r-l)/3; if(ch(mid1)>ch(mid2)) l=mid1; else r=mid2; }
dijk
int minn[100010]; bool b[100010]; vector<st>v[100010]; priority_queue<st>q; void prim() { while(q.size()) { st u=q.top(); q.pop(); if(b[u.a]) continue; b[u.a]=1; for(st i:v[u.a]) if(!b[i.a]&&minn[i.a]>u.jl+i.jl) q.push({i.a,u.jl+i.jl}),minn[i.a]=u.jl+i.jl; } }
rmq
void pre() { int x=log2(n); for(int i=1;i<=x;i++) for(int j=1;j+s[i]-1<=n;j++) mx[j][i]=__gcd(mx[j][i-1],mx[j+s[i-1]][i-1]); } int rmq(int a,int b) { int x=log2(b-a+1); return max(mx[a][x],mx[b-s[x]+1][x]); }
倍增法求lca
int lca(int x,int y) { if(d[x]<d[y]) swap(x,y); for(int i=20;i>=0;i--) if(d[jp[x][i]]>=d[y]) x=jp[x][i]; if(x==y) return x; for(int i=20;i>=0;i--) if(jp[y][i]!=jp[x][i]) y=jp[y][i],x=jp[x][i]; return jp[x][0]; }
欧拉筛
int top,p[N]; bool b[N]; for(int i=1;i<=N;i++) { if(!b[i]) p[++top]=i; for(int j=1;j<=top&&i*p[j]<=N;j++) { b[i*p[j]]=1; if(i%p[j]==0) break; } }
topsort
int a[200010]; vector<int>v[200010]; queue<int>q; void topsort() { while(q.size()) { u=q.front(),q.pop(); for(int i:v[u]) { a[i]--; if(!a[i]) q.push(i); } } }
树的重心
bool b[100010]; vector<int>v[100010]; int dfs(int k,int fa) { bool bb=1; int sum=0; for(int i:v[k]) if(i!=fa) { int j=dfs(i); sum+=j; if(j>n/2) bb=0; } if(bb&&n-sum-1<=n/2) b[k]=1; return sum; }
线段树(单点修改,区间查询)
void add(int k,int l,int r) { if(l==r) { s[k]=a[l]; return; } int mid=l+r>>1; add(k<<1,l,mid),add((k<<1)+1,mid+1,r),s[k]=s[k<<1]+s[(k<<1)+1]; } void ch(int k,int l,int r,int x,int y) { if(l==r) { s[k]=y; return; } int mid=l+r>>1; if(x<=mid) ch(k<<1,l,mid,x,y); else ch((k<<1)+1,mid+1,r,x,y); s[k]=s[k<<1]+s[(k<<1)+1]; } int ask(int k,int l,int r,int x,int y) { if(x<=l&&r<=y) return s[k]; int mid=l+r>>1,sum=0; if(mid>=x) sum=ask(k<<1,l,mid,x,y); if(mid<y) sum+=ask((k<<1)+1,mid+1,r,x,y); return sum; }
线段树(区间修改,区间查询)
void add(int k,int l,int r) { if(l==r) { s[k]=a[l]; return; } int mid=l+r>>1; add(k<<1,l,mid),add((k<<1)+1,mid+1,r),s[k]=s[k<<1]+s[(k<<1)+1]; } void ch(int k,int l,int r,int x,int y,int z) { if(l==r) { s[k]=z; return; } int mid=l+r>>1; if(x<=mid) ch(k<<1,l,mid,x,y,z); if(y>mid) ch((k<<1)+1,mid+1,r,x,y,z); s[k]=s[k<<1]+s[(k<<1)+1]; } int ask(int k,int l,int r,int x,int y) { if(x<=l&&r<=y) return s[k]; int mid=l+r>>1,sum=0; if(mid>=x) sum=ask(k<<1,l,mid,x,y); if(mid<y) sum+=ask((k<<1)+1,mid+1,r,x,y); return sum; }
lazy
void laz(int k,int num) { s[k]+=sum[k]*num,lz[k]+=num; } void xc(int k) { laz(k<<1,lz[k]),laz((k<<1)+1,lz[k]),lz[k]=0; } void add(int k,int l,int r) { if(l==r) { s[k]=a[l],sum[k]=1; return; } int mid=l+r>>1; add(k<<1,l,mid),add((k<<1)+1,mid+1,r),s[k]=s[k<<1]+s[(k<<1)+1],sum[k]=sum[k<<1]+sum[(k<<1)+1]; } void ch(int k,int l,int r,int x,int y,int z) { if(x<=l&&r<=y) { laz(k,z); return; } int mid=l+r>>1; xc(k); if(x<=mid) ch(k<<1,l,mid,x,y,z); if(mid<y) ch((k<<1)+1,mid+1,r,x,y,z); s[k]=s[k<<1]+s[(k<<1)+1]; } int ask(int k,int l,int r,int x,int y) { if(x<=l&&r<=y) return s[k]; int mid=l+r>>1,sum=0; xc(k); if(mid>=x) sum=ask(k<<1,l,mid,x,y); if(mid<y) sum+=ask((k<<1)+1,mid+1,r,x,y); return sum; }
火车头
#pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize("Ofast") #pragma GCC optimize("inline") #pragma GCC optimize("-fgcse") #pragma GCC optimize("-fgcse-lm") #pragma GCC optimize("-fipa-sra") #pragma GCC optimize("-ftree-pre") #pragma GCC optimize("-ftree-vrp") #pragma GCC optimize("-fpeephole2") #pragma GCC optimize("-ffast-math") #pragma GCC optimize("-fsched-spec") #pragma GCC optimize("unroll-loops") #pragma GCC optimize("-falign-jumps") #pragma GCC optimize("-falign-loops") #pragma GCC optimize("-falign-labels") #pragma GCC optimize("-fdevirtualize") #pragma GCC optimize("-fcaller-saves") #pragma GCC optimize("-fcrossjumping") #pragma GCC optimize("-fthread-jumps") #pragma GCC optimize("-funroll-loops") #pragma GCC optimize("-fwhole-program") #pragma GCC optimize("-freorder-blocks") #pragma GCC optimize("-fschedule-insns") #pragma GCC optimize("inline-functions") #pragma GCC optimize("-ftree-tail-merge") #pragma GCC optimize("-fschedule-insns2") #pragma GCC optimize("-fstrict-aliasing") #pragma GCC optimize("-fstrict-overflow") #pragma GCC optimize("-falign-functions") #pragma GCC optimize("-fcse-skip-blocks") #pragma GCC optimize("-fcse-follow-jumps") #pragma GCC optimize("-fsched-interblock") #pragma GCC optimize("-fpartial-inlining") #pragma GCC optimize("no-stack-protector") #pragma GCC optimize("-freorder-functions") #pragma GCC optimize("-findirect-inlining") #pragma GCC optimize("-frerun-cse-after-loop") #pragma GCC optimize("inline-small-functions") #pragma GCC optimize("-finline-small-functions") #pragma GCC optimize("-ftree-switch-conversion") #pragma GCC optimize("-foptimize-sibling-calls") #pragma GCC optimize("-fexpensive-optimizations") #pragma GCC optimize("-funsafe-loop-optimizations") #pragma GCC optimize("inline-functions-called-once") #pragma GCC optimize("-fdelete-null-pointer-checks")
-
通过的题目
-
最近活动
题目标签
- 字符串
- 17
- KMP
- 13
- 图论
- 12
- 动态规划
- 11
- 字符串哈希
- 10
- 斜率优化
- 6
- 单调队列/单调栈优化
- 4
- 二分图最大匹配
- 3
- 网络流
- 3
- 二分图最小点覆盖
- 3
- 最大流
- 3
- 数据结构
- 2
- hall定理
- 2
- 算法基础
- 2
- 二分
- 2
- 难度分类
- 2
- 模板
- 2
- 决策单调性
- 1
- 双端队列
- 1
- Manacher
- 1