bzoj 1030 文字生成器 AC自動機 dp

2022-02-27 10:16:31 字數 744 閱讀 3700

求出長度為m的包含給定的n的字串的字串的個數

首先我們把這個計數問題轉為求不包含的字串的個數

(因為直接貌似沒法做,需要容斥)

所以我們轉化為補集後用\(26^m\)一減即可

然後就是在ac自動機上跑經典dp了

注意:乙個節點如果是危險節點,那麼所有fail指標指向它的節點都是危險節點.

#include #include #include using namespace std;

typedef long long ll;

inline void read(int &x)

const int maxn = 128;

const int maxl = 128;

const int mod = 10007;

inline int qpow(int x,int p)

int ch[maxn*maxl][26],nodecnt;

bool val[maxn*maxl];

inline void insert(char *s)

} }int ans = qpow(26,m) - f[0][m];ans %= mod;

if(ans < 0) ans += mod;

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

getchar();getchar();

return 0;

}

bzoj 1030 文字生成器

題意 給出乙個n個單詞的字典,單詞長度 100 求長度為m的隨機字串中有多少個串至少包括乙個單詞 n 60,m 100 題解 好久沒有寫ac自動機啦,如今還記得模板真是難得 然而這似乎是trie圖?總之寫出來不差幾句話 首先至少包括乙個單詞這個條件不太好弄 那就轉化一下,求不含單詞的字串個數 然後就...

BZOJ 1030 文字生成器

1030 jsoi2007 文字生成器 time limit 1 sec memory limit 162 mb submit 4777 solved 1986 submit status discuss description jsoi交給隊員zyx乙個任務,編制乙個稱之為 文字生成器 的電腦軟體...

BZOJ 1030文字生成器

第一次做ac自動機 dp的題。因為前日做過一道字串dp題,這題做起來相對沒那麼困難一些。覺得一時間這題無法下手可以先試試這場div3的f題 題意 給你n個模式串,現在構造出m長度僅有26個字母的文字串,使其中至少包含1個模式串,問有多少個。思路 很容易想到dp,dpij,i表示構造到第幾位,j來列舉...