ST表
Love_xyh
这个作者很懒,什么都没留下…
展开
-
CF487B Strip
#include <bits/stdc++.h> using namespace std; const int N=1e5+5; int n,s,l,inf; int a[N],LOG[N],minn[N][18],maxn[N][18],f[N]; inline int query(int l,int r) { int s=LOG[r-l+1]; return max(maxn[l][s],maxn[r-(1<<s)+1][s])-min(minn[l][s],minn[r.原创 2020-09-29 16:30:04 · 173 阅读 · 0 评论 -
CF1120C Compress String
朴素算法n^2求最长公共后缀 #include <bits/stdc++.h> using namespace std; const int N=5e3+5; int n,a,b; int f[N],g[N][N]; char str[N]; int main(){ scanf("%d%d%d",&n,&a,&b); scanf("%s",str+1); for (register int i=1; i<n; ++i) for (register int原创 2020-09-21 20:05:02 · 188 阅读 · 0 评论 -
[AHOI2013]差异
两个后缀i,j的lcp,其实就是:min(height[k]) ,i+1<=k<=j。 所以这一部分的总和就是:height数组[2,n]内,每一区间的最小值之和。 考虑用二分+ST表来求和。 暴露了菜鸡不会写单调栈的事实… #include <bits/stdc++.h> #define int long long using namespace std; const int N=5e5+5; int n,m,ans; int sum[N],rk[N],rk2[N],tp[N],s原创 2020-09-18 20:20:10 · 141 阅读 · 0 评论