• hdu 5831 Rikka with Parenthesis II 括号匹配+交换


    Rikka with Parenthesis II

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


    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 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?
     
    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.
     
    Author
    学军中学
     
    Source
     
    Recommend
    wange2014   |   We have carefully selected several similar problems for you:  5830 5829 5828 5827 5826 
     题意:给你一个由'('和')'组成的字符串,首先你必须交换其中两个不同位置的字符,然后判断是否有一种方案使得最后形成的字符串 合法;
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <cmath>
    #include <vector>
    #include <queue>
    #include <stack>
    #include <map>
    #include <algorithm>
    #include <set>
    using namespace std;
    typedef long long ll;
    typedef unsigned long long Ull;
    #define MM(a,b) memset(a,b,sizeof(a));
    const double eps = 1e-10;
    const int  inf =0x7f7f7f7f;
    const double pi=acos(-1);
    const int N=100005;
    
    char s[N];
    int main()
    {
        int cas,n;
        scanf("%d",&cas);
        while(cas--)
        {
            scanf("%d",&n);
            scanf("%s",s);
            int l=0,r=0,len=n;
            if(len%2==1) {printf("No
    ");continue;}
            for(int i=0;s[i]!='';i++)
            {
                if(s[i]=='(') r++;
                else if(s[i]==')')
                {
                    if(r>=1) r--;
                    else l++;
                }
            }
            if(len==2)
              {
                if(l==1&&r==1) printf("Yes
    ");
                else printf("No
    ");
                continue;
              }
    
             if(l==0&&r==0) printf("Yes
    ");
             else if(l+r==2)
             {
                 if(l==1&&r==1) printf("Yes
    ");
                 else printf("No
    ");
             }
             else if(l+r==4)
             {
                 if(l==2&&r==2) printf("Yes
    ");
                 else printf("No
    ");
             }
             else printf("No
    ");
        }
        return 0;
    }
    

      分析:比赛时只看到这道题是以前做过的题目的简化版,,结果还是太大意了,,,

    本来分析出来了  ))((  这种特殊情况也是可以的,但是草稿纸没打好,一不留神以为是右移成了())(,,,,其实是()()。。悲剧

  • 相关阅读:
    echo "不允许上传该类型的文件
    php构造函数,引入数据库操作类函数
    php函数描述及例子
    php如何判断远程文件是否存在
    多线程面试题系列(16):多线程十大经典案例之一 双线程读写队列数据
    多线程面试题系列(15):关键段,事件,互斥量,信号量的“遗弃”问题
    多线程面试题系列(14):读者写者问题继 读写锁SRWLock
    多线程面试体系列(13):多线程同步内功心法——PV操作下
    多线程面试题系列(12):多线程同步内功心法——PV操作上
    多线程面试题系列(11):读者写者问题
  • 原文地址:https://www.cnblogs.com/smilesundream/p/5762937.html
Copyright © 2020-2023  润新知