bzoj4231回憶樹 AC自動機

2022-05-07 22:24:15 字數 2064 閱讀 7678

給定一顆trie樹,每次詢問u到v的路徑上構成的字串包含了給定模式串t多少次。

考慮離線之後對於所有的模式串建立ac自動機,考慮跨過lca的串範圍有限,直接暴力kmp即可。

然後我們就將一次詢問拆成了兩條鏈了,可以將每次詢問掛在鏈上然後離線去dfs,每次dfs時將這個節點新增進ac自動機匹配,對於一段u到v的鏈,我們在鏈頭的某乙個位置減去之前不合法的匹配數量,再在鏈尾加上總的匹配數量就好了。

如何用ac自動機來記錄某個固定的串匹配了多少次的話,可以建立fail樹之後用bit來動態維護子樹和。

/************************************====

* author : ylsoi

* time : 2019.7.2

* problem : bzoj4231

* e-mail : [email protected]

* ***********************************=*/

#include#define rep(i,a,b) for(int i=a,i##_end_=b;i<=i##_end_;++i)

#define drep(i,a,b) for(int i=a,i##_end_=b;i>=i##_end_;--i)

#define debug(x) cout<<#x<<"="using namespace std;

void file()

templatevoid read(t &_)

string proc()

const int maxn=3e5+10;

int n,m,ans[maxn];

int beg[maxn],to[maxn<<1],las[maxn<<1],cha[maxn<<1],cnte=1;

void add(int u,int v,int c)

namespace aca

vectorg[maxn];

int insert(int len,char *t)

return o;

} void get_fail()

} rep(i,1,cnt)g[fail[i]].push_back(i);

} void dfs(int u)

} void update(int u,int x)

int query(int u)

}int st[maxn][21],log[maxn],dep[maxn],fa_ch[maxn];

void dfs(int u,int fh)

}int lca(int x,int y)

int kth(int x,int k)

rep(i,0,qu[u].size()-1)

for(int i=beg[u];i;i=las[i])

if(u!=1)update(o,-1);

}int main()

dfs(1,0);

rep(i,2,n)log[i]=log[i>>1]+1;

rep(j,1,log[n])rep(i,1,n)

if(dep[i]-(1<=1)

st[i][j]=st[st[i][j-1]][j-1];

rep(i,1,m));

qu[u].push_back((node));

} int v1=kth(v,dep[v]-dep[anc]-len+1),v2=v1;

cnt+=dep[v1]-dep[anc];

rep(j,1,dep[v1]-dep[anc])s[cnt-j+1]='a'+fa_ch[v2],v2=st[v2][0];

if(dep[v]-dep[anc]>=len));

qu[v].push_back((node));

} s[cnt+1]='\0';

ans[i]+=kmp(s+1,t+1,cnt,len);

} aca::get_fail();

aca::dfs(0);

solve(1,0,0);

rep(i,1,m)printf("%d\n",ans[i]);

return 0;

}

P5239 回憶京都

先要了解一下組合數和楊輝三角的關係 c 0,0 c 1,0 c 1,1 c 2,0 c 2,1 c 2,2 楊輝三角大概就是這樣乙個結構,所以只要乙個二維字首就好了qaq就變成了 c 0,0 c 1,0 c 0,0 c 1,1 c 1,0 c 0,0 c 2,0 c 1,0 c 0,0 c 2,1 ...

隨筆 2019 6 7回憶高考有感

一年前的現在,我坐在河北省衡水市冀州中學考場中參加語文高考,正在奮筆疾書,作答語文試卷。而現在,我坐在湖南省長沙市中南大學毓秀樓中學習,心中感觸頗深,百感交集,既有為學弟學妹參加高考而緊張,也有自己對與高考的感悟,對高考的更深層認識。每個人對高考的見解不同,而我認為高考的最大意義不在於考試考出成績,...

虛幻4 回憶錄

接觸虛幻4約半年的時間,畢業後,也想從事三維開發的崗位,可後來各種原因,進了一家電子支付的企業,因此估計未來的很長時間不會再接觸虛幻4了 主要是由於人機器配置不夠 至今也有快兩個月沒有碰過虛幻4了,憑著記憶,將自己對虛幻4的了解記錄下來。首先說一下虛幻4的版本,在我剛開始接觸虛幻4時,還有兩個版本,...