多校联赛第八场

原创 2016年08月30日 16:35:03

Rikka with Parenthesis II

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2571    Accepted Submission(s): 913


Problem 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:
1.The empty string "" is a correct sequence.
2.If "X" and "Y" are correct sequences, then "XY" (the concatenation of X and Y) is a correct sequence.
3.If "X" is a correct sequence, then "(X)" is a correct sequence.
Each correct parentheses sequence can be derived using the above rules.
Examples of correct parentheses sequences include "", "()", "()()()", "(()())", and "(((())))".

Now Yuta has a parentheses sequence S, and he wants Rikka to choose two different position i,j and swap S_i,S_j

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?
 

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 ‘)’.
 

Output
For each testcase, print "Yes" or "No" in a line.
 

Sample Input
3 4 ())( 4 ()() 6 )))(((
 

Sample Output
Yes Yes No
Hint
For the second sample input, Rikka can choose (1,3) or (2,4) to swap. But do nothing is not allowed.
 

简单栈,注意特殊情况:)(     和      ))((

#include<stdio.h>
#include <map>
#include<cmath>
#include<string.h>
#include<string>
#include<algorithm>
#include<conio.h>
using namespace std;
long long   n;
char zhan[1000005];
long long  top;
char s[1000005];
int main()
{
	int t;
	scanf("%d",&t);
	for(int k=0;k<t;k++)
	{
		top = 0;
		memset(s,0,sizeof(s));
		memset(zhan,0,sizeof(zhan));
		scanf("%lld",&n);
		scanf("%s",s);
		if(n%2 == 1)
		{
			printf("No\n");
			continue; 
		}
		
		 
		for(int i=0;i<n;i++) 
		{
			zhan[top++] = s[i];
			if(top >=2 )
			{
				if(zhan[top-1] == ')' && zhan[top-2] == '(')
				{
					top -= 2;
				}
			}
		}
		
		if(top == 0 && n!=2)
			printf("Yes\n");
		else if( top == 2&&zhan[0] ==')'&& zhan[1] == '(')
			printf("Yes\n");
		else if(top == 4 && zhan[0] == zhan[1]&&zhan[2] == zhan[3] && zhan[1] != zhan[2])
			printf("Yes\n");
		else
			printf("No\n"); 
	} 
	return 0; 
} 




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[水题] hdu5387 多校联合第八场 Clock

Clock Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Su...

hdu5384 Danganronpa AC自动机 多校联合第八场

Danganronpa Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...
  • corncsd
  • corncsd
  • 2015年08月13日 17:20
  • 491

hdu 4681 String/杭电多校第八场1006 最长公共子序列长

#include #include #include #include using namespace std; #define maxn 1111 char a[maxn],b[maxn],...

多校第八场 hdu 5389

题意:给你n个数,将这n个数分成两部分,第一部分满足所有数字和的数字根为A,第二部分为B(数字根:将一个数的各个位加起来,如果和大于10,继续加,直到小于10)ps:一个数字的数字根等于各位数字和%上...
  • tjqACM
  • tjqACM
  • 2015年08月18日 20:00
  • 193

HDU 5828 多校第八场 1008 Rikka with Sequence(线段树--数据加强版)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5828题意:三种操作,一种是区间增加,一种是区间开方,一种是区间求和。原思路(数据已加强,这个方法已经过不...
  • xtttgo
  • xtttgo
  • 2016年08月11日 17:26
  • 1033

hdu 4678 Mine 多校第八场

可以把空白的和一圈的数字看成一堆,一堆里所有空白看成一颗石子,数字算一颗石子,那么每次可以点一个数字(相当于取一个石子),点空白(相当于取全部) 这样就转化成取石子游戏了。。。。 把sg值打标以后发现...

hdu 5821 ball(多校第八场,贪心)

题目链接 Ball Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tota...
  • fouzhe
  • fouzhe
  • 2016年08月11日 23:37
  • 187

多校第八场

HDU  4950  Monster        小模拟题,找到判断的临界条件;      #include #include #include using namespace std; __int...

[贪心] hdu5386 多校联合第八场 Cover

Cover Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Subm...

多校联赛2 Problem2 Warm up 求桥的数目+缩点后的树的直径 当时被不知道原因的爆栈爆到无语了。。

Warm up Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total S...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多校联赛第八场
举报原因:
原因补充:

(最多只允许输入30个字)