ARC059F

首先不难发现,字符串具体是啥对答案没有影响。

于是有两种做法,第一种我个人认为更好理解,就是由于长度相同的字符串,用相同操作次数产生它们的方案数是一样的,则设计 \(f(i,j)\) 表示用 \(i\) 次操作产生长度为 \(j\) 的字符串的方案数,则有

  • 加入 \(0/1\)\(f(i+1,j+1)\gets f(i+1,j+1)+2\times f(i,j)\)
  • 退格,\(f(i+1,\max(j-1,0))\gets f(i+1,\max(j-1,0))+f(i,j)\)

最后答案是 \(\dfrac{f(n,m)}{2^m}\),其中 \(m\) 表示字符串的长度。

Code

然后有做法二,设计 \(f(i,j)\) 表示用 \(i\) 次操作与字符串的前 \(j\) 位匹配上的方案数,则有

  • 退格,但是当前串为空,\(f(i+1,j)\gets f(i+1,j)+f(i,j),j=0\)
  • 退格,当前串不为空,\(f(i+1,j-1)\gets f(i+1,j-1)+2\times f(i,j),j\ne0\)
  • 加入 \(0/1\),钦定它与字符串的第 \(j+1\) 位匹配上,\(f(i+1,j+1)\gets f(i+1,j+1)+f(i,j)\)

最终答案就是 \(f(n,m)\)

Code

posted @ 2022-11-17 20:36  Kobe303  阅读(15)  评论(0编辑  收藏  举报