「CSP-S 2021 括号序列」题解

考场挂分器,送分题变成送命题。


一、状态:

d p [ i ] [ j ] dp[i][j] dp[i][j] 表示 [ i , j ] [i, j] [i,j] 这个区间内组成超级括号序列的方案数

f [ i ] [ j ] f[i][j] f[i][j] 表示在 d p [ i ] [ j ] dp[i][j] dp[i][j] 的要求上,添加限制:方案中,括号 i i i, j j j 匹配。

a n s [ i ] [ j ] ans[i][j] ans[i][j] 表示 [ i , j ] [i, j] [i,j] 这个区间能不能做到 [ l , r ] [l, r] [l,r] 全为 “*”。

c h e c k ( l , r ) = [ [ [ s [ l ] = ? ] ∨ [ s [ l ] = ∗ ] ] ∧ [ [ s [ r ] = ? ] ∨ [ s [ r ] = ∗ ] ] ] check (l, r) = \bigg[ \Big[ [s[l] = ?] \lor [s[l] = *] \Big] \wedge \Big[ [s[r] = ?] \lor [s[r] = *] \Big] \bigg] check(l,r)=[[[s[l]=?][s[l]=]][[s[r]=?][s[r]=]]]

attention: 这里区间的含义和数学上是一样的,不会是空集。


二、初始化:

a n s ans ans 即判断这个区间内是不是全是 “?” 或 “*”。 d p , f dp, f dp,f 全部设为 0 0 0


三、状态转移:

考虑所有情况,每种情况对应一种转移。


  1. ()

这种情况特判即可。

d p [ l ] [ r ] = f [ l ] [ r ] = c h e c k ( l , r ) ∗ [ l + 1 = = r ] dp[l][r] = f[l][r] = check (l, r) * [l + 1 == r] dp[l][r]=f[l][r]=check(l,r)[l+1==r]


  1. (S)

这是 s [ l ] , s [ r ] s[l], s[r] s[l],s[r] 已经匹配好了,则 [ l + 1 , r − 1 ] [l + 1, r - 1] [l+1,r1] 全为 * 就行了。

d p [ l ] [ r ] = f [ l ] [ r ] = a n s [ l + 1 ] [ r − 1 ] dp[l][r] = f[l][r] = ans[l + 1][r - 1] dp[l][r]=f[l][r]=ans[l+1][r1]


  1. (SA)

我们枚举 S 的最后一个字符的位置。

即统计 [ l + 1 , i ] [l + 1, i] [l+

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,CSP-J2021复赛有两道题目,分别是分糖果和小熊的果篮。 对于第一题分糖果,题目来源是CCF,难度为入门。根据给出的代码,这是一个基于循环的算法,通过遍历[l,r]区间内的数,计算数对n取模后的最大值。具体的实现细节可以参考引用中的代码。这道题目属于入门级别,比较简单。 第二题是关于小熊的果篮。给定一个长度为n的数组a,其中连续的相同元素被视为一个块,要求按照块的顺序输出每个块的头元素,并删除已输出的元素。具体的实现细节可以参考引用中的代码。这道题目需要使用双链表来处理,时间复杂度为O(n)。 综上所述,CSP-J2021复赛的题目包括分糖果和小熊的果篮,具体的解题思路和代码实现可以参考上述引用内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [[CSP-J 2021]比赛题解](https://blog.csdn.net/weixin_56550385/article/details/126811201)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [新鲜出炉的 CSP-J 2021 复赛题目 题解](https://blog.csdn.net/qq_23109971/article/details/121024436)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值