POJ 3691 DNA repair 基於AC自動機的DP
dp[i][j] 表示長度為 i 的前綴到達第 j 個節點的最小更改數目。
很顯然有dp[0][0] = 0;
dp[ i ][ j ] = min(dp[ i ][ j ],dp[i-1][k] + (j == k ? 0 : 1)),當且僅當j,k滿足下列條件時。
j 不為某條模式串的末節點 且 j 到 root 的由失敗指針組成的路徑上無末節點。
j 是k的兒子節點 或者 j 的父節點可由 k 沿著失敗指針找到。
#include
#include
#include
#include
#include
#include
#include
#include
#include