• kmp+DP x 子串相关的计数问题


    kmp+DP

    kmp其实相当于一台线性的AC自动机啊。所以在解决字符串匹配相关的状态转移问题上施展起来特别舒适。

    栗子1:给一个str,求有多少个长度为n的串包含子串str。【串由01构成】
    

    做法:

    • dp[i][j][2], 【前(i)位】【匹配到了(str)的第(j)位】【在之前是否完全匹配上过】的方案数。
    • 施展KMP,build出fail指针。
    • 考虑dp[i][j][0/1]的转移。我们枚举第i+1位选什么数字就好。

    把这个问题稍作变动。

    栗子2:给一个str,求有多少个长度为n的串,收尾拼接形成一个环后,包含子串str。
    【串由01构成】
    

    传送门:CF1038F code:

    做法还是很类似吧。不过在这个地方我们需要枚举我们选择的串的最长后缀 which 能与str的前缀匹配上

    (len(str))次dp即可。

    栗子3:给一个str,求有多少个长度为n的合法括号序列包含子串str。
    【串由`(`,`)`组成】
    

    辣鸡题解

  • 相关阅读:
    html概述
    html元素之meta
    ICMP
    https
    html元素之link
    数据链路层
    UDP
    js概述
    html元素之base
    vagrant和virtualbox无法创建软连接(failed to create symbolic link : Protocol error)
  • 原文地址:https://www.cnblogs.com/RUSH-D-CAT/p/9607804.html
Copyright © 2020-2023  润新知