Source
HDU 2457
My Solution
题意:给出n个模式串,给出一个主串,要求在主创上改动尽可能少的字符,使任一模式串不在主串中出现。
AC自动机+dp
按照一般的 AC自动机+dp转移 的模式(套路)来做,与1月底做的一个经典例题题差不多
URAL - 1158 Censored! AC自动机+dp
http://blog.csdn.net/prolightsfxjh/article/details/54729646
定义dpij表示主串上si字符自动机上的j节点时的最少方案。
如果自动机上j节点的下一个节点ac.ch[j][k]; 0 <= k < 4
如果是危险节点则continue;
如果刚好是s[i],则不用改 即 dp[i+1][ac.ch[j][k] = min(dp[i+1][ac.ch[j][k], dp[i][j]);
如果不是则要改 即 dp[i+1][ac.ch[j][k] = min(dp[i+1][ac.ch[j][k], dp[i][j] + 1);
答案就是 dp[szs][j]的最小值。
#include
#include
#include
#include
#include
#include
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
https://www.prolightsfxjh.com/
Thank you!
------from ProLightsfx
共有 0 条评论