cf1214C C. Bad Sequence

2023-05-16

C. Bad Sequence
time limit per test1 second
memory limit per test512 megabytes
inputstandard input
outputstandard output
Petya’s friends made him a birthday present — a bracket sequence. Petya was quite disappointed with his gift, because he dreamed of correct bracket sequence, yet he told his friends nothing about his dreams and decided to fix present himself.

To make everything right, Petya is going to move at most one bracket from its original place in the sequence to any other position. Reversing the bracket (e.g. turning “(” into “)” or vice versa) isn’t allowed.

We remind that bracket sequence s is called correct if:

s is empty;
s is equal to “(t)”, where t is correct bracket sequence;
s is equal to t1t2, i.e. concatenation of t1 and t2, where t1 and t2 are correct bracket sequences.
For example, “(()())”, “()” are correct, while “)(” and “())” are not. Help Petya to fix his birthday present and understand whether he can move one bracket so that the sequence becomes correct.

Input
First of line of input contains a single number n (1≤n≤200000) — length of the sequence which Petya received for his birthday.

Second line of the input contains bracket sequence of length n, containing symbols “(” and “)”.

Output
Print “Yes” if Petya can make his sequence correct moving at most one bracket. Otherwise print “No”.

Examples
input

2
)(
output
Yes
input
3
(()
output
No
input
2
()
output
Yes
input
10
)))))(((((
output
No
Note
In the first example, Petya can move first bracket to the end, thus turning the sequence into “()”, which is correct bracket sequence.

In the second example, there is no way to move at most one bracket so that the sequence becomes correct.

In the third example, the sequence is already correct and there’s no need to move brackets.
题意: 给出字符串长度,和一段只含左右括号的字符,并定义该字符序列是好的条件为括号匹配或者只通过移一个括号,能使其完全匹配,如果满足上述条件,则输出Yes,否则输出No。
思路: 首先对n进行奇偶判断,奇数直接输出No,因为左括号数不等于右括号数,如果为偶数则用栈去模拟括号是否匹配(遇到左括号入栈,遇到右括号且栈不为空出栈),同时记录左括号数目和右括号数目,如果左括号数目不等于右括号数目,直接输出No,如果相等,再判断栈里的剩余左括号数目,如果其数目小于等于1,则输出Yes,否则输出No。详情看代码和注释。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5 + 10;
char s[N];
int main() {
	int n;
	scanf("%d", &n);
	scanf("%s", s);
	if (n % 2 == 1) printf("No\n");
	else {
		stack<char> st;
		int num = 0, num1 = 0;
		for (int i = 0; i < n; i++) {
			if (s[i] == '(') st.push(s[i]); // 遇到左括号,直接入栈 
			else if (s[i] == ')' && !st.empty()) st.pop(); // 遇到右括号且当前栈不为空,出栈 
			if (s[i] == '(') num++; // 记录左括号数目 
			else num1++; // 记录右括号数目
		}
		if (st.empty() && num == num1) printf("Yes\n"); // 栈为空且左右括号数目相等说明括号匹配 
		else {
			if (st.size() > 1 || num != num1) printf("No\n"); // 如果栈中剩余左括号数目大于1或左右括号数目不相等,输出No 
			else printf("Yes\n"); // 否则输出Yes 
		}
	}
	return 0; 
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cf1214C C. Bad Sequence 的相关文章

  • 验证日期序列的顺序是否正确

    我有一个包含 4 列日期的数据框 应该是 col1 首先出现 col2 其次出现 col3 第三出现 col4 最后出现 我想确定哪些行的日期不按顺序排列 这是一个玩具数据框 col1 lt c as Date 2004 1 1 as Da
  • Python有内置函数可以生成从0到1的100个数字吗?

    我正在寻找类似的东西range 但它允许我指定开始值和结束值 以及我想以类似方式使用的集合中需要多少个数字range用于for loops Python 没有浮点范围函数 但您可以使用列表推导式轻松模拟浮点范围函数 gt gt gt lo
  • 图数据库中时间序列数据的序列聚合

    All 我是图形数据库领域的新手 想知道此类示例是否适用于图形数据库 假设我正在看一场棒球比赛 当每个球员击球时 有 3 种可能的结果 安打 三振或保送 对于每个击球手和整个棒球赛季 我想弄清楚的是序列的计数 例如 对于 N 次上垒的击球手
  • 来自升序序列的连续子列表

    given xs 1 2 3 4 6 7 9 10 11 我的目标是回来 1 2 3 4 6 7 9 10 11 我想我可以这样做 groupBy x y gt succ x y xs 但这会返回 1 2 3 4 6 7 9 10 11 进
  • 想要创建序列号

    我想生成序列号 e g I have NID ABD90 BGJ89 HSA76 而且我要 ID NID 1 ABD90 2 BGJ89 3 HSA76 我应该运行什么代码才能得到这个结果 请帮我 既然你标记了 SAS 我就用 SAS 来回
  • 在 TensorFlowdynamic_rnn 中使用sequence_length参数时如何处理填充

    我正在尝试使用dynamic rnnTensorflow 中的函数可加快训练速度 经过一些阅读后 我的理解是加速训练的一种方法是显式地将值传递给sequence length该函数中的参数 经过更多阅读后 发现this https stac
  • 如何从 F# Seq 获取连续值对

    我有一个序列 1 a 2 b 3 c 我怎样才能把这个seq变成 1 a 2 b 3 c 这是一个非常聪明的解决方案 let s 1 a 2 b 3 c let pairs s s gt Seq pairwise gt Seq mapi f
  • SQL Server 序列线程安全吗?

    标题太宽泛 但我找不到更具体的标题 请随意更改为更好的标题 我有一个使用序列而不是身份的表 我有三个生产者应用程序 它们同时插入表中 一个消费者应用程序从状态未处理的表中选择 然后处理它们 最后更新已处理的行 消费者应用程序有一个规则 它不
  • 从具有开始/结束日期的行创建年份序列行的数据框

    我对 R 和编码来说是一个相对较新的用户 我已经搜索过但无法解决这个问题 我有以下数据 groupid start date end date Status 1 2014 01 01 2017 01 01 A 1 2018 01 01 20
  • 在 R 中按顺序查找起始索引和终止索引

    假设我有以下序列 x c 1 1 0 0 1 0 1 1 1 0 0 R 中是否有一种优雅的方法来返回每个 1 序列的开始和停止索引 答案应该是一个 2 列数组 其中 nRows 1 序列的数量 startIndx 1 5 7 stopIn
  • 如何更改动态 SQL 中的序列?

    我正在尝试创建一个脚本来将数据从一个数据库迁移到另一个数据库 我当前无法做的一件事是将序列的 nextval 设置为另一个数据库中序列的 nextval 我从 user sequences 中得到了值的差异 并生成了以下动态 SQL 语句
  • 如何修改 Kotlin 序列的前缀但保留尾部?

    Kotlin 提供take and takeWhile先采取的方法n的项目Sequence
  • 为连续序列和分割向量创建分组变量

    我有一个向量 例如c 1 3 4 5 9 10 17 29 30 我想将形成规则 连续序列的 相邻 元素分组在一起 即在参差不齐的向量中增加 1 结果是 L1 1L2 3 4 5L3 9 10 L4 17L5 29 30 天真的代码 前 C
  • 如何使用 set 维护列表的顺序?

    In 1 l1 a 2 3 0 9 0 0 2 6 b a In 2 l2 list set l1 In 3 l2 Out 3 a 0 2 3 6 9 0 b 在这里您可以看到列表 l2 的顺序与原始 l1 的顺序不同 我需要从列表中删除重
  • PostgreSQL 无间隙序列

    我正在从 MySql 迁移到 Postgres 我注意到当您从 MySql 中删除行时 这些行的唯一 id 在您创建新行时会被重新使用 使用 Postgres 如果您创建行并删除它们 则不会再次使用唯一的 id Postgres 中出现这种
  • 将静态数据(不随时间变化)添加到 LSTM 中的序列数据

    我正在尝试建立一个如下图所示的模型 请看下图 我想在 LSTM 层中传递序列数据 在另一个前馈神经网络层中传递静态数据 血型 性别 后来我想将它们合并 然而 我对这里的维度感到困惑 如果我的理解是正确的 如图所示 5维序列数据如何与4维静态
  • 寻找连续重复序列的算法

    我正在寻找一种算法 可以在基因组序列中找到短串联重复 基本上 给定一个非常长的字符串 它只能包含 4 个字符 ATCG 我需要找到彼此相邻的 2 5 个字符长之间的短重复 前任 TACATGAGATCATGATGATGATGATGGAGCT
  • F# 正确使用序列缓存

    我正在尝试将 Seq cache 与我制作的函数一起使用 该函数返回最多为 N 的素数序列 不包括数字 1 我无法弄清楚如何将缓存的序列保留在范围内 但仍然使用它在我的定义中 let rec primesNot1 n 2 n gt Seq
  • Clojure 集合与序列的相等性

    我注意到 Clojure 1 4 似乎很乐意考虑向量等于seq相同的向量 但同样不适用于地图 1 2 seq 1 2 gt true 1 2 seq 1 2 gt false 为什么要这样的行为 这样会有所不同吗 Clojure 的 可以认
  • 在 Java 中将弯音发送到 MIDI 音序器

    我了解启动和运行 MIDI 音序器的基础知识 并且希望能够在播放过程中增加 减小序列的音高 但弯音是发送到合成器而不是音序器的消息 我尝试将音序器的接收器设置为合成器的发射器 当我发送弯音短消息时 音序器保持相同的音调 但随后合成器以新的弯

随机推荐

  • linux环境下交叉编译arm架构jpeglib

    1 官网下载jpeglib源码 下载地址 http www ijg org 选择目前最新的版本jpegsrc v9c tar gz 2 配置 configure prefix span class token operator 61 spa
  • python批处理将图片进行放大实例代码

    最近处理一些规格不一的照片 xff0c 需要修改成指定尺寸便于打印 xff0c 本篇文章主要给大伙介绍关于Python批量处理将图片进行放大的相关资料 xff0c 文中通过实例代码介绍的非常详细 xff0c 需要的伙伴们可以参考下 pyth
  • 一些必不可少的Sublime Text 2插件

    中文原文 xff1a 一些必不可少的sublime text 2插件 整理自 xff1a Essential Sublime Text 2 Plugins and Extensions 请尊重版权 xff0c 转载请注明来源 xff0c 多
  • linux系统安装Confluence

    1 使用docker安装Confluence容器 docker run d name confluence p 8090 8090 user root root cptactionhank atlassian confluence late
  • Ubuntu 20.04 安装STM32开发环境 (Ubuntu+STM32CubeMX + Vscode+Makefile+Openocd)

    小记 xff1a 最近在学习I MX6U和Zynq比较多 xff0c 又都是在linux系统下 xff0c 然后又不想丢下STM32单片机 xff0c 所以就想到了可不可以在Ubuntu操作系统中编写STM32的代码 xff0c 来替代Wi
  • rust 介绍及开发环境配置(linux+windows)

    本文以windows或linux桌面作为开发环境 注意 xff1a rust需要c的编译器 rustup是官方的 xff0c 会安装cargo包管理 xff0c 这个cargo通常会伴随rust开发的全过程 一 介绍 官网链接 xff1a
  • 打开.data文件的步骤

    老师最近给了一组 data格式的文件 xff0c 当我直接强行改为 csv或者 xls文件再使用Python打开 xff0c 发现数据在Python中只有一列 xff0c 后面无法对数据进行索引 xff0c 在搜了一些方法后 xff0c 分
  • Week2 实验 A - 化学 Gym - 270437A

    题目 甄别烷烃基的类别 假设如上图 xff0c 这个烷烃基有6个原子和5个化学键 xff0c 6个原子分别标号1 6 xff0c 然后用一对数字 a b 表示原子a和原子b间有一个化学键 这样通过5行a b可以描述一个烷烃基 输入第一行为数
  • cf1214B B. Badges

    B Badges time limit per test1 second memory limit per test512 megabytes inputstandard input outputstandard output There
  • OpenWrt无线桥接同网段主路由的方法

    OpenWrt无线桥接同网段主路由的方法 注 xff1a 有些版本的openwrt需要将DNS转发关闭 xff0c 否则无法上网
  • mybatis-sql语句莫名其妙被加上limit分页条件或未执行查询条件

    1 背景 在优化代码 xff0c 查询sql执行情况时 xff0c 突然发现写的查询条件突然发现被加了limit参数 以为遇到了bug xff0c 查了半天 结果是同事在另一业务代码里查询时用了开启了分页 xff0c 但后面业务其实没用到
  • 2020-11-03

    ios工作层设备 一层 xff08 物理层 xff09 xff1a 网卡 集线器 中继器 二层 xff08 数据链路层 xff09 xff1a 网桥 交换机 xff08 暴露真实mac地址 xff09 三层 xff08 网络层 xff09
  • 2020-12-08

    代码简介 xff1a python读取excel数据 xff0c 并汇总结果 xff0c 统计厂商个数 xff0c 每个厂商的版本个数 xff0c 提测型号种类 xff0c 厂商总的测试通过率 import xlrd import open
  • vue echart入门柱状图

    不知道为啥script只能这样引入才显示图片 span style background color f3f4f5 color 000000 import as echarts from 39 echarts 39 span lt temp
  • Brup盲注,测sql注入

    第一步 xff0c 先拦截接口 xff0c 发送到intrude 第二步 xff1a 对需要注入的参数值添加 第三步 xff1a 加载脚本文件 第三步 xff1a 攻击后 xff0c 查看是否有注入成功的脚本 备注 xff1a sql注入脚
  • vue处理后端的数据

    方法一 xff1a 如果后端是已类的方式传递给前端数据 xff0c 直接res data读取参数 方法二 xff1a vue请求后端返回的数据res object object 使用JSON stringify xff08 xff09 和J
  • 调用带有签名的API接口,字符串转化成JSONObject 处理返回的结果

    一 调用带有签名的API接口 xff08 sign已加密 xff09 String Url 61 34 http xxx 2000 dcs xxxxx 34 43 34 param1 61 34 43 param1 43 34 amp no
  • SIPP压测环境安装部署,以及脚本编写

    1 首先去官网下载sipp的tar包 xff0c 然后把sipp 3 4 1 tar gz上传到liunx下自建的目录或者home目录 xff08 rz 上传sz 下载 xff09 2 将sipp 3 4 1 tar gz进行解压 xff0
  • vue父组件与子组件通信

    在父组件上弹出子组件 父组价代码 lt template gt lt div gt lt div class 61 39 container 39 gt lt el button type 61 39 primary 39 icon 61
  • cf1214C C. Bad Sequence

    C Bad Sequence time limit per test1 second memory limit per test512 megabytes inputstandard input outputstandard output