csp 202009 5 密信與計數 (DP)

2021-10-10 01:14:44 字數 882 閱讀 2127

明文和密文一一對應,考慮對明文dp,用ac自動機判斷密文是否非法(即包含詞典中的詞)。

記f[i][j][k]表示長度為i,密文匹配位於ac自動機的結點j,且正在檢視解密密碼本的第k頁的明文個數。

考慮轉移:

主動轉移,列舉後乙個詞典的詞,用密碼本對應出密文,借助ac自動機來判斷加上這個詞後的明文對應密文是否非法,合法則轉移。

時間複雜度:o(mn|s|^2),其中|s|為詞典大小。

//by cml

#include using namespace std;

const int maxn=60;

const int mod=998244353;

int n,m,k,len[maxn];char s[maxn][maxn];char s[1010];

long long ans[1010],f[1010][51][51];

int out[maxn][26],next[maxn][26];

bool error;

void add(long long &x,long long v)

struct trit

void init()

void insert(char *s)

while (lm) continue;

f=true;

tk=k;

tj=j;

for (int _=0;_>n>>m;

for (int i=0;i<26;++i) }

while (scanf("%s",s[k])!=eof)

t.build();

t.solve();

return 0;

}

CSP 最優配餐

問題描述 棟棟最近開了一家餐飲連鎖店,提供外賣服務。隨著連鎖店越來越多,怎麼合理的給客戶送餐成為了乙個急需解決的問題。棟棟的連鎖店所在的區域可以看成是乙個n n的方格圖 如下圖所示 方格的格點上的位置上可能包含棟棟的分店 綠色標註 或者客戶 藍色標註 有一些格點是不能經過的 紅色標註 方格圖中的線表...

CSP 學生排隊

問題描述 體育老師小明要將自己班上的學生按順序排隊。他首先讓學生按學號從小到大的順序排成一排,學號小的排在前面,然後進行多次調整。一次調整小明可能讓一位同學出隊,向前或者向後移動一段距離後再插入佇列。例如,下面給出了一組移動的例子,例子中學生的人數為8人。0 初始佇列中學生的學號依次為1,2,3,4...

csp火車購票

試題編號 201609 2 試題名稱 火車購票 時間限制 1.0s 記憶體限制 256.0mb 問題描述 請實現乙個鐵路購票系統的簡單座位分配演算法,來處理一節車廂的座位分配。假設一節車廂有20排 每一排5個座位。為方便起見,我們用1到100來給所有的座位編號,第一排是1到5號,第二排是6到10號,...