P7914 [CSP-S 2021] 括号序列 题解

博客详细解析了CSP-S 2021竞赛中关于括号序列的问题,重点介绍了如何使用区间动态规划(区间dp)进行求解。讨论了6种不同的状态,并给出了状态转移方程,以及考场代码作为示例。
摘要由CSDN通过智能技术生成

其实T2想清楚就不是很难,(虽然想清楚也不简单)

我这里分享一种很自然的想法,当然是区间dp啦

区间dp分6种状态

  1. ***的种类数,这种情况相当与题目中的 S S S,2到5中都一样

  2. (...)的种类数,这种情况表示有括号包裹的合法序列,2到5中都一样

  3. (...)***(...)***(...)***的种类数,表示以(...)开头,以***结尾的一长串,没有个数限制,比如(...)***也可以

  4. (...)***(...)***(...)的种类数,表示以(...)开头,以(...)结尾的一长串,没有个数限制,比如(...)也可以

  5. ***(...)***(...)***(...)的种类数,表示以***开头,以(...)结尾的一长串,没有个数限制,比如***(...)也可以

  6. ***(...)***(...)***的种类数,表示以***开头,以***结尾的一长串,没有个数限制,比如***也可以

转移很自然:

d p [ l ] [ r ] [ 0 ] = ( r − l + 1 ≤ k ) ∗ d p [ l ] [ r − 1 ] [ 0 ] ∗ ( s [ r ] = = ′ ∗ ′ ∣ ∣ s [ r ] = = ′ ? ′ ) dp[l][r][0]=(r-l+1\le k)*dp[l][r-1][0]*(s[r]=='*'||s[r]=='?') dp[l][r][0]=(rl+1k)dp[l][r1][0](s[r]==s[r]==?)

d p [ l ] [ r ] [ 1 ] = p i p e i ( l , r ) ∗ ( d p [ l + 1 ] [ r − 1 ] [ 2 ] + d p [ l + 1 ] [ r − 1 ] [ 3 ] + d p [ l + 1 ] [ r − 1 ] [ 4 ] ) dp[l][r][1]=pipei(l,r)*(dp[l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值