首页 > 其他 > 详细

$bootpuss$切不掉的「水题」

时间:2019-10-14 12:47:20      阅读:75      评论:0      收藏:0      [点我收藏+]

 

UPD:2019-10-13


 

简单的序列

$Description$:

从前有个括号序列 $s$,满足 $|s| = m$。你需要统计括号序列对 $(p, q)$ 的数量。
其中 $(p, q)$ 满足 $|p| + |s| + |q| = n$,且$ p + s + q $是一个合法的括号序列。

$Solution$:

简单$dp$或卡特兰数。括号序列匹配把左右括号分别看作$+1$,$-1$就很方便了。

$dp[i][j]$定义为放了$i$个括号,前缀和为$j$的方案数,注意转移是把括号往后放,不然会算重。

$$dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1]$$

实际上这个$dp$数组可以有卡特兰数求解。

卡特兰原式子:$C_{n+m}^{m}-C_{n+m}^{m-1}$($n>m$)

在这里相当于$j+2*x=n+m$,得到$n=j+x,m=x$即可

然后$O((n-m)^2)$枚举$p$串长度和留下的括号个数

 

$bootpuss$切不掉的「水题」

原文:https://www.cnblogs.com/2018hzoicyf/p/11670164.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!