BZOJ3507 萬用字元匹配(雜湊,動態規劃)

2022-03-20 05:08:01 字數 719 閱讀 2104

bzoj

對於匹配唯一存在影響的只有萬用字元,而\(?\)的影響也並不大,所以唯一需要仔細考慮的是\(*\)。

考慮乙個\(dp\),設\(f[i][j]\)表示上面匹配到第\(i\)個字元,下面匹配到第\(j\)個字元是否存在方案。

轉移也很顯然,但是我們注意到,母串的確定字元是沒有任何意義的,

一旦萬用字元考慮清楚了就只需要一一對應就好了。

那麼,設\(f[i][j]\)表示上面匹配到了第\(i\)個萬用字元,下面匹配到了第\(j\)個位置的方案數。

轉移的時候考慮一下萬用字元是什麼,以及不包含萬用字元的字元部分是否相等。

這題就很容易解決了。

#include#include#include#include#include#includeusing namespace std;

#define max 222222

#define ull unsigned long long

const int base=2333;

ull h1[max],h2[max],pw[max];

char ch[max],s[max];

int p[50],tot,n,m;

bool f[20][max];

int main()

}} puts(f[tot][m]?"yes":"no");

} return 0;

}

bzoj3507 Cqoi2014 萬用字元匹配

我們將題目輸入的那個含萬用字元的串,記為 萬用字元串 下面的檔名記為 檔名 檔名 數量很少可以依次查詢。我們先將 萬用字元串 以 為界,將 萬用字元串 分解,得到若干子串,記為 通配子串 我們將每個 通配子串 各建立乙個 ac自動機。而有的 通配子串 可能含 萬用字元,我們將再次按 為界,分解這個 ...

BZOJ3507 Cqoi2014 萬用字元匹配

必須要記住字串很好卡一不小心就o n 別問我為什麼這麼說.qaq 這題首先滿足位數與字母兩個限制,那麼我們 分大塊?分小塊,求各塊hash值,同時預處理出來每個字串的字首hash這樣就可以o 1 對比了 千萬不要忘記hash字串對比的功能,我在考試的時候一腦抽就忘了.include include ...

44 萬用字元匹配

題目描述 提示幫助 提交記錄社群討論閱讀解答 隨機一題 給定乙個字串 s 和乙個字元模式 p 實現乙個支援 和 的萬用字元匹配。可以匹配任何單個字元。可以匹配任意字串 包括空字串 兩個字串完全匹配才算匹配成功。說明 示例 1 輸入 s aa p a 輸出 false解釋 a 無法匹配 aa 整個字串...