BZOJ 4327 JSOI2012 玄武密碼

2021-07-25 17:38:01 字數 712 閱讀 4589

字尾自動機裸題。

藉著這道裸題總結一下字尾自動機的查詢問題。

1.查字首 查詢時不跳parent,遇到空節點就跳出。

2.查子串 查詢時跳parent,記錄最大ans.

3.查次數 lct維護right陣列

4.查不同的串的數目 在建樹時維護,乙個點對答案的貢獻為this->max_len - this->parent->max_len

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

struct sam

}*root=new sam(),*last=root;

void my_insert(int x)

if(!p) np->parent=root;

else}}

last=np;

}char s[10000000];

int main()

for(int i=1;i<=m;i++)

printf("%d\n",ans);

}return

0;}

BZOJ4327 JSOI2012玄武密碼

description 在美麗的玄武湖畔,雞鳴寺邊,雞籠山前,有一塊富饒而秀美的土地,人們喚作進香河。相傳一日,一縷紫氣從天而至,只一瞬間便消失在了進香河中。老人們說,這是玄武神靈將天書藏匿在此。很多年後,人們終於在進香河地區發現了帶有玄武密碼的文字。更加神奇的是,這份帶有玄武密碼的文字,與玄武湖南...

BZOJ4327 JSOI2012 玄武密碼

對所有詢問串建立ac自動機。然後將母串在ac自動機上跑,每走到乙個點x,從x點出發沿著fail指標能到的所有字首都是匹配成功的,暴力向上走,碰到走過的就break,這樣每個點最多隻會被標記一次。時間複雜度 o n 100m include includeconst int n 10000003,m ...

玄武密碼(bzoj4327)(JSOI2012)

題目描述 原題來自 jsoi 2012 在美麗的玄武湖畔,雞鳴寺邊,雞籠山前,有一塊富饒而秀美的土地,人們喚作進香河。相傳一日,一縷紫氣從天而至,只一瞬間便消失在了進香河中。老人們說,這是玄武神靈將天書藏匿在此。很多年後,人們終於在進香河地區發現了帶有玄武密碼的文字。更加神奇的是,這份帶有玄武密碼的...