关闭

多校联赛第八场

标签: 多校联赛
272人阅读 评论(0) 收藏 举报
分类:

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; 
} 




0
0
查看评论

2014多校联赛第八场 1006 Monster

A去攻击B,B不会还手,A每次攻击打掉B a点血,B每回合回复
  • azx736420641
  • azx736420641
  • 2014-08-14 17:17
  • 458

湖南多校第八场

H(ly) 切入点很妙,解法也很妙。 题的原型是hdu 5649,对一段序列a[n]进行多次区间(升/降)排序,求a[k]。 解法: 二分a[k] 对于当前的a[k],原序列中比a[k]小的置为0,不比a[k]小的置为1,然后进行m次区间操作。 这时,对一...
  • Imnotzox
  • Imnotzox
  • 2017-05-07 20:57
  • 83

多校第八场

HDU 4681 String 这道DP题目,赛后我们才A的........比赛中场外孟神怒A之 正向,反向各求最长公共字串一次,然后处理 #include #include #include #include #include #include #include #i...
  • paradiserparadiser
  • paradiserparadiser
  • 2013-08-19 19:39
  • 581

多校第八场解题报告

1003Mine 传送门 让人无限伤心的一道题。 这题是一道简单的sg函数取石子的题,题目中有几处需要注意的。 首先这不是传统意义上的扫雷的走法,白格的八向联通的。 然后是不存在同时属于两个白格范围的格子,也就是不存在同时属于两个石堆的石子。 我们把单独的格子记为1,雷记为0,白格区...
  • u011388758
  • u011388758
  • 2013-08-20 21:38
  • 583

2015多校第八场总结

1001 Travel with candy 贪心。此类问题,关键是上帝视角,用充分的自主权进行贪心。 如果油箱里的buykbuy_k高于当前购入价buyibuy_i,则将油kk退出 如果油箱里的buykbuy_k小于当前售价sellisell_i,则此时再个贪心。油kk要么在ii售出,要么在j...
  • u010620604
  • u010620604
  • 2015-10-30 19:24
  • 231

2014多校联赛第八场 1008 Number Transformation

题目问是x经过k次变换得到的值是多少
  • azx736420641
  • azx736420641
  • 2014-08-14 17:12
  • 379

HDU 5826 2016多校联赛 第八场1006

题意:   给出n个小球的初始速度v0和方向,小球在横轴上运动,碰到其他球发生弹性碰撞,小球的加速的满足 a = C/v , (C为常数),问t秒后,速度第k大的小球的速度。  思路:  首先就是小球碰撞后会交互速度,并朝着相反方向回去, 也就相当于两个...
  • Theflowerofac
  • Theflowerofac
  • 2016-08-12 09:44
  • 211

多校联赛第十场

Hard problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1219 &#...
  • chudongfang2015
  • chudongfang2015
  • 2016-08-19 13:59
  • 279

多校第八场 hdu 5389

题意:给你n个数,将这n个数分成两部分,第一部分满足所有数字和的数字根为A,第二部分为B(数字根:将一个数的各个位加起来,如果和大于10,继续加,直到小于10)ps:一个数字的数字根等于各位数字和%上9;如果答案为0,则为9,其余则为模下来的值。 解题思路:本题关键是要知道数字根,然后很容...
  • tjqACM
  • tjqACM
  • 2015-08-18 20:00
  • 204

2014多校联合-第八场

1001:2048 很明显,一开始看错题了。。。sad 这题目我感觉挺卡时间的。。。 dp[i][j]:在选择2^i的时候,选择的和为j*2^i到(j+1)*2^i-1时候的情况。 #include #include #include #include #include #include ...
  • rowanhaoa
  • rowanhaoa
  • 2014-08-20 15:22
  • 1073
    个人资料
    • 访问:199761次
    • 积分:6394
    • 等级:
    • 排名:第4532名
    • 原创:434篇
    • 转载:82篇
    • 译文:1篇
    • 评论:88条
    楚东方
    博客专栏
    最新评论