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

2023-05-16

其实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+1][r-1][2]+dp[l+1][r-1][3]+dp[l+1][r-1][4]) dp[l][r][1]=pipei(l,r)(dp[l+1][r1][2]+dp[l+1][r1][3]+dp[l+1][r1][4])

其中 p i p e i ( l , r ) pipei(l,r) pipei(l,r)表示 s [ l ] s[l] s[l] s [ r ] s[r] s[r]可以匹配成括号

d p [ 2 ] [ l ] [ r ] = ∑ d p [ 3 ] [ l ] [ i ] ∗ d p [ 0 ] [ i + 1 ] [ r ] dp[2][l][r]=\sum dp[3][l][i]*dp[0][i+1][r] dp[2][l][r]=dp[3][l][i]dp[0][i+1][r]

d p [ 3 ] [ l ] [ r ] = ∑ ( d p [ 2 ] [ l ] [ i ] + d p [ 3 ] [ l ] [ i ] ) ∗ d p [ 1 ] [ i + 1 ] [ r ] dp[3][l][r]=\sum (dp[2][l][i]+dp[3][l][i])*dp[1][i+1][r] dp[3][l][r]=(dp[2][l][i]+dp[3][l][i])dp[1][i+1][r]

d p [ 4 ] [ l ] [ r ] = ∑ ( d p [ 5 ] [ l ] [ i ] + d p [ 4 ] [ l ] [ i ] ) ∗ d p [ 1 ] [ i + 1 ] [ r ] dp[4][l][r]=\sum (dp[5][l][i]+dp[4][l][i])*dp[1][i+1][r] dp[4][l][r]=(dp[5][l][i]+dp[4][l][i])dp[1][i+1][r]

d p [ 5 ] [ l ] [ r ] = ∑ d p [ 4 ] [ l ] [ i ] ∗ d p [ 0 ] [ i + 1 ] [ r ] dp[5][l][r]=\sum dp[4][l][i]*dp[0][i+1][r] dp[5][l][r]=dp[4][l][i]dp[0][i+1][r]

最后不要忘了把 d p [ l ] [ r ] [ 0 ] dp[l][r][0] dp[l][r][0]算到 d p [ l ] [ r ] [ 5 ] dp[l][r][5] dp[l][r][5]里,还有 d p [ l ] [ r ] [ 1 ] dp[l][r][1] dp[l][r][1]算到 d p [ l ] [ r ] [ 3 ] dp[l][r][3] dp[l][r][3]里,不知到为什么可以重新看一遍dp六种状态的定义

我的考场代码(不要学我#define int long long啊):

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=510,mod=1e9+7;
int n,k,dp[6][N][N];
char s[N];
bool pipei(int l,int r){
  return (s[l]=='('||s[l]=='?')&(s[r]==')'||s[r]=='?');
}
signed main(){
  freopen("bracket.in","r",stdin);
  freopen("bracket.out","w",stdout);
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin>>n>>k>>s+1;
  for(int i=1;i<=n;i++)dp[0][i][i-1]=1;
  for(int len=1;len<=n;len++){
    for(int l=1;l+len-1<=n;l++){
      int r=l+len-1;
      if(len<=k)dp[0][l][r]=dp[0][l][r-1]&&(s[r]=='*'||s[r]=='?');
      if(len>=2){
      dp[1][l][r]=pipei(l,r)*(dp[2][l+1][r-1]+dp[3][l+1][r-1]+dp[4][l+1][r-1]+dp[0][l+1][r-1])%mod;
        for(int i=l;i<r;i++){
          (dp[2][l][r]+=dp[3][l][i]*dp[0][i+1][r])%=mod;
          (dp[3][l][r]+=(dp[2][l][i]+dp[3][l][i])*dp[1][i+1][r])%=mod;
          (dp[4][l][r]+=(dp[5][l][i]+dp[4][l][i])*dp[1][i+1][r])%=mod;
          (dp[5][l][r]+=dp[4][l][i]*dp[0][i+1][r])%=mod;
        }
      }
      (dp[5][l][r]+=dp[0][l][r])%=mod;
      (dp[3][l][r]+=dp[1][l][r])%=mod;
    }
  }
  cout<<dp[3][1][n];
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

P7914 [CSP-S 2021] 括号序列 题解 的相关文章

  • 2021最新阿里云部署k8s集群(篇1 购买服务器)

    实验kubernetes版本 xff1a v1 22 1 x1f947 阿里云地址 阿里云开发者社区 阿里云官网开发者社区 云计算社区 注意 xff1a 做此实验先准备100RM xff0c 本实验为抢占实例 CentOs版本 xff1a
  • 2021-09-14

    eclipse maven run 错误 xff1a Fatal error compiling 无效的标记 release maven compiler plugin 3 8 1 中使用release便签eclipse 使用 Run gt
  • 2021-03-19

    switch语句实现成绩选择 注意强制转换 import java util Scanner public class Grade Switch 64 param args public static void main String ar
  • CSP认证 201803-3 URL映射

    CSP认证 201803 3 URL映射 链接 xff1a http 118 190 20 162 view page gpid 61 T71 题意 xff1a 从简条件下的 U R L 映 射 URL映射
  • 【2021年8月】解决 rosdep update超时问题

    修改两个文件即可快速解决超时问题 1 修改 etc ros rosdep sources list d 20 default list 执行sudo gedit etc ros rosdep sources list d 20 defaul
  • 2021互联网大厂职级对应薪资一览表

    原文连接 xff1a https mp weixin qq com s nYNZjJJzrO0Sc5h2AEPnaQ 互联网大厂新入职员工各职级薪资对应表 xff08 技术线 xff09 图片数据来源 xff1a 知乎加 上面的表格不排除有
  • 10 个 GitHub 上最火的程序员简历项目,2021 金三银四必备!

    大家好 xff0c 我是你们的 猫哥 xff0c 一个不喜欢吃鱼 又不喜欢喵 的超级猫 前言 猫哥是一个常年混迹在 GitHub 上的猫星人 xff0c 所以发现了不少好的前端开源项目 常用技巧 xff0c 在此分享给大家 公众号 xff1
  • 2021-06-18

    AttributeError module torch functional has no attribute relu AttributeError module torch functional has no attribute rel
  • 2021-03-16

    hullib Rtc 获取时间之后必须获取日期他才会有时间 HAL RTC GetTime amp hrtc amp sTime RTC FORMAT BIN HAL RTC GetDate amp hrtc amp sDate RTC F
  • 2021-08-19-leetcode-00001

    二分查找 704 给定一个 n 个元素有序的 xff08 升序 xff09 整型数组 nums 和一个目标值 target xff0c 写一个函数搜索 nums 中的 target xff0c 如果目标值存在返回下标 xff0c 否则返回
  • 个人简历2021

    标题 个人简历 日期 2021 09 27 23 42 57 标签 简历 分类 工作 职业发展 说下我的个人简历吧 xff0c 希望大家能够了解我 xff0c 一起在技术这条路上一直走下去 个人信息 姓名性别年龄现居地址邮箱陈作立男29上海
  • CSP-S 模拟53

    中下游水准 xff0c 暴力分没拿全 xff0c T1水了 T1 u 两个差分数组水掉 xff08 竖着一个 xff0c 斜着一个 xff09 T2 v 状压 43 记忆化搜索 xff0c 对于sta 61 1 lt lt 30 用hash
  • 串口通信学习(GPS模块)2021.5.10

    GPS串口通信学习实践 2021 5 10 1 串口通信简介1 1 波特率1 2 数据位1 3 停止位1 4 奇偶校验位 2 GPS模块串口通信配置2 1 驱动安装2 2 插入GPS模块2 3 GPS模块串口通信数据简介 3 Java实现G
  • 队列的链式存储--- 2021.10.27

    上一讲链接 xff1a 队列的基本概念 2021 10 8 队列的链式存储 xff1a 什么叫队列的链式存储呢 xff1f 我们在上一讲都知道队列的结构特点 xff0c 那么我们可不可以通过链表来实现队列 xff0c 从而实现了队列的链式存
  • CSP 202305-1 重复局面

    题目背景 国际象棋在对局时 同一局面连续或间断出现3次或3次以上 可由任意一方提出和棋 问题描述 国际象棋每一个局面可以用大小为 8 8 的字符数组来表示 其中每一位对应棋盘上的一个格子 六种棋子王 后 车 象 马 兵分别用字母 k q r
  • CCF CSP 中国计算机学会-CCF计算机软件能力认证(计算机水平测试)-简介-详情

    CCF gt gt 简介 中国计算机学会 英文名为China Computer Federation 简称CCF 是由从事计算机及相关科学技术领域的科研 教育 开发 生产 管理 应用和服务的个人及单位自愿结成 依法登记成立的全国性 学术性
  • 数据结构--二叉树

    前言 关于二叉树知识的考察主要分两部分 第一部分在初赛中体现 一般考察二叉树的节点个数 树高和遍历问题 1 二叉树定义 在计算机科学中 二叉树是每个结点最多有两个子树的树结构 通常子树被称作 左子树 left subtree 和 右子树 r
  • 2021美赛 MCM\ICM D题

    自古以来 音乐就已成为人类社会的一部分 已成为文化遗产的重要组成部分 为了理解音乐在人类集体经验中所扮演的角色 我们被要求开发一种量化音乐发展的方法 在创作新音乐时 有许多因素会影响艺术家 包括其天赋的创造力 当前的社会或政治事件 使用新乐
  • CCF/CSP 201409-3 字符串匹配(满分题解Java版)

    此题虽然放在了第三题 但是如果对Java的API了解的比较好的同学 解这道题一点都不难 比前几题都要简单一些 题目描述 官方题目地址 读题请点击 Java满分题解 import java util Scanner next 与 nextLi
  • CCF/CSP 201604-2 俄罗斯方块(满分题解Java版)

    此题 猛滴一看确实非常容易让人懵懵的 主要是题目描述的非常不清晰 很难让人能够透彻的理解 如果连题目都看不懂 那就不谈写出代码了 题目描述 官方题目描述 题目地址 题目解读 关键的是要理解题目 Java题解 import java util

随机推荐

  • ubuntu与win10共享LE蓝牙鼠标

    类似的教程网上有很多 xff0c 大部分是找到蓝牙设备目录下info文件中的 linkKey 中的key值复制到win10下注册表中 xff0c 但是对于蓝牙5 0或LE设备来说 xff0c 是没有linKey的 xff0c 这里我也参考了
  • FileZilla搭建FTP服务器图解教程,并允许外网访问NAT内网

    FTP是用来在两台计算机之间传输文件 xff0c 是Internet中应用非常广泛的服务之一 FTP服务是网络中经常采用的资源共享方式之一 FTP协议有PORT和PASV两种工作模式 xff0c 即主动模式和被动模式 今天我分享一个最近我自
  • 十进制转换八进制(C语言基础)

    题目描述编程 xff0c 输入一个 xff11 xff10 进制正整数 xff0c 然后输出它所对应的八进制数 输入无输出无样例输入10样例输出12 include lt stdio h gt int main int num m 61 0
  • 【Godot】对 Godot 节点设计的思考

    对 Godot 中节点设计的思考 单个节点的功能设计的想法 xff0c 体会 Godot 的设计思想 低耦合 设计单个节点可复用的节点时 xff0c 调用方法尽量只对当前节点可获取到的变量或方法进行使用 xff0c 比如我写一个可以控制 K
  • 【Godot】行为树(一)了解与设计行为树代码

    行为树介绍 行为树是个节点树 xff0c 父节点通过不断遍历子节点 xff0c 根据不同类型的节点执行不同的分支 最终调用叶节点执行功能 行为树也不难理解 xff0c 他就像代码逻辑一样 xff0c 只是用节点的方式展现出来 xff0c 而
  • 【Godot 4.0】一个简单的匿名方法的使用lambda

    Godot 4 0 beta3 Godot 4 0 中添加了 lambda 表达式 xff0c 匿名方法等很多方便的特性 xff0c 这里我写个用于扫描目录下所有文件的功能 可以看到代码非常简洁 span class token keywo
  • aur报错(错误:一个或多个文件没有通过有效性检查)

    当我们从aur里安装软件时 xff0c 有时会出现这种报错 xff08 如安装deepin wine wechat xff09 61 61 gt 错误 xff1a 一个或多个文件没有通过有效性检查 xff01 Error downloadi
  • Java使用不同方式获取两个集合List的交集、补集、并集(相加)、差集(相减)

    1 明确概念 首先知道几个单词的意思 xff1a 并集 61 union 交集 61 intersection 补集 61 complement 析取 61 disjunction 减去 61 subtract 1 1 并集 对于两个给定集
  • 【VTK】VTK框选表面拾取三角面片——通过观察者命令模式

    VTK框选拾取三角面片 最近需要实现拾取三角面片的交互功能 xff0c 看了官方示例和网友分享 xff0c 都是使用vtkInteractorStyleRubberBandPick搭配vtkAreaPicker 但是具体实现方法都是选择继承
  • 【VTK】VTK框选表面拾取面片——仅选中前表面

    VTK框选表面拾取面片 仅选中前表面 接上一篇 VTK框选表面拾取三角面片 通过观察者命令模式 上一篇最后遗留一个问题 xff0c 框选表面后 xff0c 会把模型背面的面片也一起选中 所以这篇内容是解决该问题的 效果预览 功能说明 通过鼠
  • GoDB开发踩坑记

    前言 前几天因为leancloud网速太慢所以自己写了一个go语言数据库 xff0c 想部署到我的树莓派上 正文 我在写的时候发现了一些神奇的操作 golang 把js变量的表达方式字符串转换成go变量 可以先把它嵌入到一个json字符串中
  • 通过Java反射获得对象里面的所有字段名以及字段对应的值

    首先我们有一个对象类 span class token keyword package span com span class token punctuation span xuzihui span class token punctuat
  • GoDB开发踩坑记(代码实现)

    前言 之前写了一篇GoDB开发踩坑记但是内容有些不全 xff0c 所以来补充一下 所以没看过GoDB开发踩坑记的可以先看一下那篇文章 正文 golang encode josn 把map string interface 转换为json字符
  • vim配置

    众所周知 xff0c vim是一个非常牛逼的文本编辑器 xff0c 但是他的界面很丑 xff0c 而且在终端下面也不能美化多少 但是 xff01 在windows下有一个叫做gvim的玩意儿 xff0c 在mac下有一个叫macvim的东东
  • 全网最简洁Archlinux 安装教程

    Archlinux 安装教程 先从mirrors ustc edu cn下载archlinux安装镜像 然后下载刻录工具etcher Windows版 xff1a Windows版 Linux版 xff1a Linux版 Mac版 xff1
  • CF6E Exposition题解

    前置知识 st 表 xff1a 用于求静态的区间最值问题 不会的同学可以看wsyear巨佬的这篇文章https blog csdn net wsyear article details 114334351 spm 61 1001 2014
  • 最简单的柯西不等式证明

    柯西不等式证明 柯西不等式 xff0c 是形式如下的不等式 a i 2
  • CF1656E Equal Tree Sums题解

    其实这道题不难 首先假设 1 1 1 是根节点 我看到这道题第一反应就是直接假设整棵树权值之和是某一个定值 xff0c 然后再dfs造每一个 a x
  • CF1656D K-good题解

    这场比赛我没打 xff0c 错失上分好机会 这题是真的水 直接根据题意列出式子 xff1a n 61 k k
  • P7914 [CSP-S 2021] 括号序列 题解

    其实T2想清楚就不是很难 xff0c 虽然想清楚也不简单 我这里分享一种很自然的想法 xff0c 当然是区间dp啦 区间dp分6种状态 的种类数 xff0c 这种情况相当与题目中的 S S S xff0c 2到5中都一样 的种类数 xff0