非常不好意思,因為想要排版,所以今天先只把**貼出來,明天補題解。
40pts暴力:直接暴力匹配
#include#include#include#include#include#define maxn 100010
using namespace std;
int n,m;
char s[maxn];
inline int solve(int l1,int r1,int l2,int r2)
return maxx;
} int main()
return 0;
}
開o2才能a的正解:sa+二分+二分+主席樹
複雜度是兩隻log的。
#include#include#include#include#include#define maxn 200010
using namespace std;
int n,m,p,tot;
int sa[maxn],rnk[maxn],tax[maxn],tp[maxn];
int lg[maxn],h[maxn],rt[maxn],st[maxn][18];
char s[maxn];
struct nodet[maxn<<4];
inline void build(int &x,int f,int l,int r,int k)
inline int query(int x,int f,int l,int r,int ll,int rr)
inline void suffix_sort()
}inline void get_h()
}inline void st_init()
inline int st_query(int l,int r)
l=ans;
l=rnk[l2],r=n,ans=l;
while(l<=r)
r=ans;
return query(rt[r],rt[l-1],1,n,l1,r1-x+1)==0?false:true;
}int main()
printf("%d\n",ans);
}return 0;
}
洛谷P4094 TJOI2016 字串
portal 給出乙個字串 s s leq10 5 和 m 次詢問,每次詢問子串 s x 1.x 2 的所有子串和 s y 1.y 2 的最長公共字首長度的最大值。字尾陣列 二分答案 主席樹。易知 s x 1.x 2 的所有子串可以視為 s x 1.x 2 的所有字尾。那麼可以得到 ans max ...
題解 TJOI HEOI2016 字串
loj 二分答案 mid 考慮字尾陣列求出的陣列,那麼只要看 sa 陣列裡的 包含 c 開頭的字尾的 一段滿足最長公共字首 geq mid 的區間裡,有沒有開頭在 a,b mid 1 中的字尾即可.可能上面那段話太模糊,請繼續看下去 具體來說,先求出乙個 l 滿足 sa 陣列中 l,c 這段區間的最...
SDOI2016 模式字串
題目 bzoj第400題留念 這道題如果只有前三組資料的話還是很水的呀,我們完全可以點分 首先我們先倍長那個字串,直到這個字串的長度大於等於 n 我們把這個字串做一遍 hash 記下每乙個字首每乙個字尾的 hash 值是多少 之後套路點分,對於當前的分治重心找出乙個字首乙個字尾來拼接,由於我們倍長了...