HDU 5831 Rikka with Parenthesis II(六花与括号II)
HDU 5831 Rikka with Parenthesis II (六花与括号II)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
|
Description |
题目描述 |
|
As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some math tasks to practice. There is one of them: Correct parentheses sequences can be defined recursively as follows: Now Yuta has a parentheses sequence S, and he wants Rikka to choose two different position i,j and swap Si,Sj. Rikka likes correct parentheses sequence. So she wants to know if she can change S to a correct parentheses sequence after this operation. It is too difficult for Rikka. Can you help her? |
六花是个数学渣,你懂的。勇太表示前途堪忧,因此他决定来个数学特训。 下面是部分简介: 正确的括号序列定义如下: 1.空字符串 "" 为正确序列。 2.如果 "X" 与 "Y" 都是正确序列, 那么 "XY" (将 X, Y相互连接) 也是一个正确的是序列。 现在勇太有个括号序列 S, 让六花选两个不同的位置 i, j 然后交换 Si, Sj。 六花喜欢正确的括号序列。因此她想知道是否能通过这种做法把S变成一个正确的括号序列。 六花表示痛苦无力,急需援助。 |
|
Input |
输入 |
|
The first line contains a number t(1<=t<=1000), the number of the testcases. And there are no more then 10 testcases with n>100 For each testcase, the first line contains an integers n(1<=n<=100000), the length of S. And the second line contains a string of length S which only contains ‘(’ and ‘)’. |
第一行有一个数t(1<=t<=1000),表示测试用例的数量。并且不超过10个测试用例是n>100。 对于每个测试用例,第一行有一个整数n(1<=n<=100000),表示S的长度。第二行有一个只包含’(‘与‘)’长度为S的字符串。 |
|
Output |
输出 |
|
For each testcase, print "Yes" or "No" in a line. |
对于每个测试用例,输出一行"Yes"或"No"。 |
|
Sample Input - 输入样例 |
Sample Output - 输出样例 |
|
3 |
Yes |
|
Hint |
提示 |
|
For the second sample input, Rikka can choose (1,3) or (2,4) to swap. But do nothing is not allowed. |
对于第二个样例输出,六花可以选择 (1,3) 或 (2,4) 进行交换。但什么也不做并不好。 |
【题解】
大意就是交换一次后能否得到合法的括号序列,但是必须交换。
尽可能合并配对的括号,最后剩下...)))(((...的形式,只有空、)(、以及))((为交换后合法。
需要注意输入是()时必得)(,加个if即可。
【代码 C++】
#include <cstdio>
int main(){
int t, n, l, e, nTemp;
char c;
scanf("%d", &t);
while (t--){
scanf("%d ", &n); nTemp = n;
l = e = ;
while (n--){
c = getchar();
if (c == '(') ++l;
else{
if (l) --l;
else ++e;
}
}
if (nTemp == && e == ) puts("No");
else{
if (l == e && e <= ) puts("Yes");
else puts("No");
}
}
return ;
}
HDU 5831 Rikka with Parenthesis II(六花与括号II)的更多相关文章
- HDU 5831 Rikka with Parenthesis II (栈+模拟)
Rikka with Parenthesis II 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5831 Description As we kno ...
- hdu 5831 Rikka with Parenthesis II 线段树
Rikka with Parenthesis II 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5831 Description As we kno ...
- HDU 5831 Rikka with Parenthesis II (贪心)
Rikka with Parenthesis II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- hdu 5831 Rikka with Parenthesis II 括号匹配+交换
Rikka with Parenthesis II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- HDU 5831 Rikka with Parenthesis II (贪心) -2016杭电多校联合第8场
题目:传送门. 题意:T组数据,每组给定一个长度n,随后给定一个长度为n的字符串,字符串只包含'('或')',随后交换其中两个位置,必须交换一次也只能交换一次,问能否构成一个合法的括号匹配,就是()( ...
- HDU 5831 Rikka with Parenthesis II
如果左括号数量和右括号数量不等,输出No 进行一次匹配,看匹配完之后栈中还有多少元素: 如果n=2,并且栈中无元素,说明是()的情况,输出No 如果n=2,并且栈中有元素,说明是)(的情况,输出Yes ...
- HDU 5831 Rikka with Parenthesis II ——(括号匹配问题)
用一个temp变量,每次出现左括号,+1,右括号,-1:用ans来记录出现的最小的值,很显然最终temp不等于0或者ans比-2小都是不可以的.-2是可以的,因为:“))((”可以把最左边的和最右边的 ...
- 【HDU5831】Rikka with Parenthesis II(括号)
BUPT2017 wintertraining(16) #4 G HDU - 5831 题意 给定括号序列,问能否交换一对括号使得括号合法. 题解 注意()是No的情况. 任意时刻)不能比(超过2个以 ...
- hdu 5204 Rikka with sequence 智商不够系列
Rikka with sequence Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.p ...
随机推荐
- linux strace
yum install -y strace 若某一进程占用cpu高可以用strace -p pid进行跟踪查看 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直 ...
- 鸟哥的Linux私房菜之学习shell script
运行程序的时候一般都是创建一个子程序来执行,所以子程序中的变量什么的在当前的shell下没法使用,但是如果使用source来执行就可以在当前shell下执行程序 shift 1 去掉第一个参数,后面接 ...
- 在Javaweb中使用Scala
Java 是一门比较优秀的编程语言, 其最大功劳是建立非常繁荣的JVM平台生态.不过 Java 语法比较麻烦,写过 C, Python 的人总是想使用简洁的语法,又希望利用上 Java 平台的强大,因 ...
- Android 常用工具类之LogUtil,可以定位到代码行,双击跳转
package cn.utils; import android.util.Log; public class LogUtils { public static boolean isDebug = t ...
- Spring事务注解@Transactional回滚问题
Spring配置文件,声明事务时,如果rollback-for属性没有指定异常或者默认不写:经测试事务只回滚运行时异常(RuntimeException)和错误(Error). <!-- 配置事 ...
- SQL Server系统表sysobjects介绍与使用
关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器.你可 ...
- Hibernate,Session方法使得java对象进入持久化状态;持久化对象特征
以下情况java对象进入持久化状态: session.save()方法把临时对象转变为持久化对象. session.load()和session.get()方法得到的对象总是处于持久化状态. sess ...
- centos7.1-64bit安装qtcreator
首先,启用 EPEL Repository: yum -y install epel-release 启用 EPEL Repository 後, 可以用 yum 直接安裝qtcreator: yum ...
- PHP给图片加文字(水印)
准备工作: 代码: <?php header("Content-type: image/jpeg"); //浏览器输出,如不需要可去掉此行 $im = @imagecreat ...
- Hiking 分类: 比赛 HDU 函数 2015-08-09 21:24 3人阅读 评论(0) 收藏
Hiking Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Subm ...