顯然是ac自動機對吧
插入單詞之後把文章在自動機上跑一遍,到達過的節點打上花火標記
之後檢查一下每個單詞有幾個標記即可
可以把題目中的4個字母對映成abcd方便遍歷
#include#include#include
#include
using
namespace
std;
const
int n=1e7+5
;char word[100005][105
],s[n];
intn,m;
ch)}
struct
ac_auto
};node *root;
void
ini()
void ins(char *str)
now->size++;
}void
build()
else root->son[i]=root;
}while(!q.empty())
else x->son[i]=x->fail->son[i];}}
}void query(char *str)
}int ans(char *str)
return i-1
; }
}ac;
intmain()
ac.build();
ac.query(s);
for(int i=1;i<=m;i++)printf("
%d\n
",ac.ans(word[i]));
return0;
}
JSOI2012 玄武密碼
傳送 這道題就是乙個sam的水題 所以這也是一篇很水的部落格 我們建完sam後,把每乙個串放上去跑就行了。因為題目要求字首匹配,所以一旦失配,就直接返回了。include include include include include include include include include ...
BZOJ 4327 JSOI2012 玄武密碼
字尾自動機裸題。藉著這道裸題總結一下字尾自動機的查詢問題。1.查字首 查詢時不跳parent,遇到空節點就跳出。2.查子串 查詢時跳parent,記錄最大ans.3.查次數 lct維護right陣列 4.查不同的串的數目 在建樹時維護,乙個點對答案的貢獻為this max len this pare...
BZOJ4327 JSOI2012玄武密碼
description 在美麗的玄武湖畔,雞鳴寺邊,雞籠山前,有一塊富饒而秀美的土地,人們喚作進香河。相傳一日,一縷紫氣從天而至,只一瞬間便消失在了進香河中。老人們說,這是玄武神靈將天書藏匿在此。很多年後,人們終於在進香河地區發現了帶有玄武密碼的文字。更加神奇的是,這份帶有玄武密碼的文字,與玄武湖南...