bzoj
很套路的ac
自動機+dp
首先,如果長度小於n
就不存在任何限制
直接大力dp
然後強制限制不能走到帶有標記的點上面
如果長度恰好為
n 的長度
那麼,要考慮是否恰好卡在範圍裡面 於是d
p狀態多記一維
表示是否卡在範圍裡面
最後求一下和就行啦
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define max 2000
#define mod 1000000007
struct node
t[max];
int tot,m;
char n[max],ch[max];
int f[max][max][2],g[max][max];
void insert(char *s)
t[now].lt=1;
}void getfail()
}int main()
}for(int i=1;ifor(int j=0;j<=tot;++j)
ans=(ans+g[i][j])%mod;
f[0][0][1]=1;
for(int i=0;ifor(int u=0;u<=tot;++u)
if(!t[u].lt)
}for(int i=0;i<=tot;++i)
ans=(ans+f[l][i][0])%mod,ans=(ans+f[l][i][1])%mod;
printf("%lld\n",ans);
return
0;}
BZOJ3530 數數(AC自動機,動態規劃)
bzoj 很套路的 ac 自動機 dp 首先,如果長度小於 n 就不存在任何限制 直接大力 dp 然後強制限制不能走到帶有標記的點上面 如果長度恰好為 n 的長度 那麼,要考慮是否恰好卡在範圍裡面 於是 dp 狀態多記一維 表示是否卡在範圍裡面 最後求一下和就行啦 include include i...
AC自動機 建立nlogn個AC自動機
string set queries 題意 給你3種操作,1 加入乙個串到集合中。2 刪除集合中的某乙個串 3 查詢集合中的字串在給定的字串種出現幾次。同乙個串可重複 解法 建立多個ac自動機,用二進位制分組來處理。加入給你21個串 分為 16 4 1,再新增乙個串的時候,即21 1,22 16 4...
AC自動機及字尾自動機
ac自動機是一種基於trie樹的演算法,其本質和kmp上的處理很相似。trie樹結構 kmp轉移思路 ac自動機組要由三個部分組成 trie樹的建立 fail指標的匹配 對ac自動機的詢問 每次建立自動機會有一次初始化 ac自動機類 struct node node結構體 struct ac voi...