HEOI2016 TJOI2016 字串問題

2022-04-26 01:12:08 字數 1135 閱讀 8908

非常不好意思,因為想要排版,所以今天先只把**貼出來,明天補題解。

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 值是多少 之後套路點分,對於當前的分治重心找出乙個字首乙個字尾來拼接,由於我們倍長了...