hdu4534

此题是ac自动机+状态压缩dp

由于按要求的各个串的长度不超过8个,所以可以用状态压缩来表示各个串的状态

dp【i】【j】【k】【2】其中i代表长度i的串,j代表节点,k代表必须选择的串的每个串的选择状况,其中dp代表删除的值,2一个代表删除的个数,一个代表同时的价值

那么转移就是dp【i】【j】【k】【0】=min(dp【i-1】【pre】【prek】【0】+1)如果删除一个字符的状态比删除个数要优那么就是这个值,如果相等的时候

就要比较dp【i】【j】【k】【1】=min(dp【i-1】【pre】【prek】【1】+val)其中pre是前状态,prek代表加入状态k之前的状态

然后这里要判断的就是禁止串,那么只需要建模式串的时候记录禁止串的节点,那么在后面跑匹配串的时候看是否到禁止节点进行判断就好了,还要要注意的是由于是禁止串所以在建立失配的时候要将禁止串传上去。

最后统计所有的全必须串状态为1的dp值就好了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值