UNIQUE VISION Programming Contest 2023 Summer(AtCoder Beginner Contest 312)D题题解

news2024/11/15 23:21:56

文章目录

  • [Count Bracket Sequences](https://atcoder.jp/contests/abc312/tasks/abc312_d)
    • 问题建模
    • 问题分析
      • 1.分析合法括号字符串的特点
      • 2.从集合角度分析字符串每个字符的作用
        • 代码

Count Bracket Sequences

在这里插入图片描述在这里插入图片描述

问题建模

给定一个字符串,字符串内仅有3种字符,‘(’,‘)’,‘?’,其中’?'字符可以变为另外两种字符的其中一种,问最多可以产生多少个合法的括号字符串。

问题分析

1.分析合法括号字符串的特点

合法的字符串其左右括号个数一定相等,且对于任意一个位置的左括号数量一定大于等于右括号数量。

2.从集合角度分析字符串每个字符的作用

若当前字符可为左括号,则每个集合内字符串左括号个数+1,若当前字符可以为右括号,则每个集合内字符串左括号个数-1。

则用DP动态维护集合,设 f ( i , j ) f(i,j) f(i,j)为到字符i,左括号个数为j的集合的个数,转移方式根据当前字符,进行+或者-的转移。

代码

#include<bits/stdc++.h>

#define x first
#define y second
#define C(i) str[0][i]!=str[1][i]
using namespace std;
typedef unsigned long long ULL;
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
const int N =3100, Mod =998244353;
int dp[N][N];

void solve() {
    string str;
    cin >>str;
    int n=str.size();
    dp[0][0]=1;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            ///为左括号时
            if(str[i]!=')') dp[i+1][j+1]=(dp[i+1][j+1]+dp[i][j])%Mod;
            ///为右括号时
            if(j!=0&&str[i]!='(')   dp[i+1][j-1]=(dp[i+1][j-1]+dp[i][j])%Mod;
        }
    }
    cout <<dp[n][0] <<"\n";
}  

int main() {
    int t = 1;
    //cin >> t;
    while (t--) solve();
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/854954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

期权定价模型系列【1】—BSM通用式模型

这是期权定价模型专栏的第一篇文章&#xff0c;此专栏旨在分享一些期权定价模型&#xff0c;将会从最基础的BSM模型开始写起&#xff0c;逐步扩散到蒙特卡洛模拟、二叉树等数值法模型&#xff0c;以及跳跃扩散模型、随机波动率模型&#xff0c;神经网络模型等等。 如果你觉得有…

[OnWork.Tools]系列 05-系统工具

简介 系统工具主要是将Window常用工具的快捷启动的集合 双击快速启动 计算器,记事本,截图,画图工具 控制面板,服务管理,关闭显示器,关机 启动文件夹,我的电脑,管理工具 右键菜单 添加快捷方式到桌面

外卖点餐小程序开源源码——支持扫码点餐

一套支持店内扫码点餐、外卖点餐配送于一体的餐饮系统&#xff0c;支持商家创建优惠券&#xff0c;支持商家自定义打印机功能&#xff0c;支持商家财务管理&#xff0c;支持商户菜品管理&#xff0c;支持菜品自定义分类&#xff0c;支持商家招募骑手入驻功能。系统基于thinkphp…

类与对象【下】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析2 目录 &#x1f449;&#x1f3fb;初始化列表初始化列表注意点 &#x1f449;&#x1f…

LinearAlgebraMIT_7_Ax=0

上节课讲了向量子空间中的列空间和零空间&#xff0c;这节课来讲零空间的(Special solutions)特解&#xff0c;也就是Ax0的特解。在求解特解的核心便是使用消元法求得(row echelon form)阶梯矩阵或者(reduced row echelon form/RREF)最简矩阵。 我们接下来举一个例子&#xff…

Android使用kotlin+协程+room数据库的简单应用

前言&#xff1a;一般主线程&#xff08;UI线程&#xff09;中是不能执行创建数据这些操作的&#xff0c;因为等待时间长。所以协程就是为了解决这个问题出现。 第一步&#xff1a;在模块级的build.gradle中引入 id com.android.application// roomid kotlin-androidid kotlin…

亚马逊第三方卖家服务收入已达自营81%

据MarketplacePulse最新报道&#xff0c;亚马逊在第三方卖家服务上的收入&#xff0c;已经达到相当于其自营业务81%的规模。 佣金、物流费用以及广告构成了亚马逊整个第三方卖家服务。亚马逊最新发布的第二季度财报显示&#xff0c;亚马逊在包括销售佣金、物流费用的第三方卖…

2023河南萌新联赛第(五)场:郑州轻工业大学 --Kruskal

题目描述 给定一张nnn个点的无向完全图&#xff0c;其中两点之间的路径边权为两点编号的按位与&#xff08;编号为 (1,2,...,n)(1,2,...,n)(1,2,...,n)&#xff09;&#xff0c;即w(u,v)u&v(1≤u,v≤n)w\left(u, v \right )u\&v \left( 1 \le u, v \le n \right)w(u,v…

使用Flask框架mock server实战(三)

1、demo1&#xff1a;登录接口 1.1 Flask代码 from flask import request, Flask, jsonify# 创建1个实例 app Flask(__name__)# 解决接收中文报文乱码问题 app.config[JSON_AS_ASCII] False# 登录接口 # 指定路由和请求方法。strict_slashesFalse 对URL最后的/符合是否严格…

natapp内网穿透使用教程

官网 https://natapp.cn/1.首先在本站注册账号 2.登录后,点击左边 购买隧道,免费就行 3.我的隧道 进行一些配置 5.根据您的本机下载对应的客户端,比如我的本机是win10,64位,则下载Windows 64位的客户端 6.下载之后,解压至任意目录,得到natapp.exe (linux下无需解压,直接 wg…

logback日志框架学习(1)介绍logback

首先说下对日志框架的感受&#xff0c;很多人slf4j-api slf4j-simple logback-core logbak-classic log4j logj42很多的日志框架&#xff0c;控制台各种输出的时候日志框架warn error&#xff0c;有时候还不能输出日志。究其原因&#xff0c;大家都觉得日志框架不太重要&#x…

硬件系统工程师宝典(36)-----盘点常用的总线和常见的逻辑电平

各位同学大家好&#xff0c;欢迎继续做客电子工程学习圈&#xff0c;今天我们继续来讲这本书&#xff0c;硬件系统工程师宝典。 上篇我们了解了SDRAM的存储技术以及SDRAM的发展历程&#xff0c;技术的进步推动着产品的升级&#xff0c;也加速了整个电子行业的发展。今天我们来…

[信号与系统系列] 正弦振幅调制之差拍信号

当将具有不同频率的两个正弦曲线相乘时&#xff0c;可以创建一个有趣的音频效果&#xff0c;称为差拍音符。这种现象听起来像颤音&#xff0c;最好通过选择一个频率非常小的信号与和另一个频率大约1KHz的信号&#xff0c;把二者混合从而听到。一些乐器能够自然产生差拍音符。使…

SAP MIGO 移动原因维护

在OMJJ中维护 在OMJJ中&#xff0c;选择你要维护的移动类型&#xff0c;在“对话结构”中选择“移动原因”&#xff0c;可以修改和添加了。

【JUC】复习指南

JUC复习指南&#xff1a; JUC有哪些知识点&#xff1f; 什么是Juc Lock接口 线程间通信 集合的线程安全问题 多线程锁 Callable接口 JUC三大辅助类 CountDownLatch CyclicBarrier Semaphore 读写锁 ReetrantReadWriteLOck 阻塞队列 ThreadPool线程池 Fork/join Com…

【Docker】Docker容器化技术基础(一篇可以让你学到docker使用的文章)

Docker容器化技术 Docker&#xff08;软件跨环境迁移&#xff09;Docker概念&#xff1a;安装Dockerdocker架构配置Docker镜像加速器 一、Docker命令服务daemon相关的命令镜像相关命令Docker容器相关命令 二、Docker容器的数据卷数据卷概念配置数据卷配置数据卷容器 三、Docker…

关于简单C++函数在内存中的存储问题

举例 int main(){... }int data(){... }int add(){... } 在分段式存储管理时&#xff0c;根据人们的需求&#xff0c;人为分段存储 如图&#xff1a;

MySql用户管理、权限管理

用户管理 1. 查看系统用户&#xff08;查询mysql系统数据库中的user表&#xff09; select * from mysql.user; 2. 创建用户 CREATE USER 用户名主机名 identified by 密码 -- 创建用户zhonghua,只能在当前主句localhost访问,密码为123456 create user zhonghualocalhost i…

代码反向生成时序图类图-Visual_Paradigm实践

目录 前言 一、Visual_Paradigm介绍 1、主界面介绍 2、功能简介 二、基于代码的序列图生成 1、新建VP项目工程 2、序列图反向生成 三、VP类图生成 1、生成主入口 四、数据ER模型生成 1、SQL脚本 2、ER反向生成 总结 前言 不知道作为研发的小伙伴们&#xff0c;在平时的…