zoukankan      html  css  js  c++  java
  • CodeForces 990C

    Description

    A bracket sequence is a string containing only characters "(" and ")".

    A regular bracket sequence is a bracket sequence that can be transformed into a correct arithmetic expression by inserting characters "1" and "+" between the original characters of the sequence. For example, bracket sequences "()()", "(())" are regular (the resulting expressions are: "(1)+(1)", "((1+1)+1)"), and ")(" and "(" are not.

    You are given nn bracket sequences s1,s2,,sns1,s2,…,sn. Calculate the number of pairs i,j(1i,jn)i,j(1≤i,j≤n) such that the bracket sequence si+sjsi+sj is a regular bracket sequence. Operation ++ means concatenation i.e. "()(" + ")()" = "()()()".

    If si+sjsi+sj and sj+sisj+si are regular bracket sequences and iji≠j, then both pairs (i,j)(i,j) and (j,i)(j,i) must be counted in the answer. Also, if si+sisi+si is a regular bracket sequence, the pair (i,i)(i,i) must be counted in the answer.

    Input

    The first line contains one integer n(1n3105)n(1≤n≤3⋅105) — the number of bracket sequences. The following nn lines contain bracket sequences — non-empty strings consisting only of characters "(" and ")". The sum of lengths of all bracket sequences does not exceed 31053⋅105.

    Output

    In the single line print a single integer — the number of pairs i,j(1i,jn)i,j(1≤i,j≤n) such that the bracket sequence si+sjsi+sj is a regular bracket sequence.

    Sample Input

    Input
    3
    )
    ()
    (
    Output
    2
    Input
    2
    ()
    ()
    Output
    4

    Hint

    In the first example, suitable pairs are (3,1)(3,1) and (2,2)(2,2).

    In the second example, any pair is suitable, namely (1,1),(1,2),(2,1),(2,2)(1,1),(1,2),(2,1),(2,2).

    括号匹配问题,需要注意几个细节。

    有以下几种情况是不能与其他组括号构成合法的括号:)(         )(((      )))(

    已经是合法的括号组不需要与不合法的括号组匹配。

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<algorithm>
     6 #include<queue>
     7 #include<stack>
     8 #include<deque>
     9 #include<map>
    10 #include<iostream>
    11 using namespace std;
    12 typedef long long  LL;
    13 const double pi=acos(-1.0);
    14 const double e=exp(1);
    15 const int N = 300010;
    16 
    17 #define lson i << 1,l,m
    18 #define rson i << 1 | 1,m + 1,r
    19 
    20 map<LL,LL> mp;
    21 char con[N];
    22 int main()
    23 {
    24     LL i,p,j,n,check;
    25     LL cont=0,ans=0,len1,len2;
    26     scanf("%lld",&n);
    27     getchar();
    28     for(j=1;j<=n;j++)
    29     {
    30         p=check=0;
    31         len1=len2=0;
    32         memset(con,0,sizeof(0));
    33         scanf("%s",con);
    34         for(i=0;i<300009;i++)
    35         {
    36             if(con[i]==0)
    37                 break;
    38             if(con[i]=='(')
    39             {
    40                 len1++;
    41                 p++;
    42             }
    43             else
    44             {
    45                 p--;
    46                 if(len1)
    47                     len1--;
    48                 else
    49                     len2++;
    50             }
    51         }
    52         if(len1==0&&len2==0)
    53             cont++;
    54         else
    55         {
    56             if(len1==0)
    57                 mp[p]++;
    58             if(len2==0)
    59                 mp[p]++;
    60         }
    61     }
    62     ans=cont*cont;
    63 
    64     map<LL,LL>::iterator it1;
    65     for(it1=mp.begin();it1!=mp.end();it1++)
    66     {
    67         if(it1->first>0)
    68             break;
    69         if(mp[-(it1->first)]>0)
    70             ans+=(it1->second)*mp[-(it1->first)];
    71     }
    72     printf("%lld
    ",ans);
    73     return 0;
    74 }
    View Code

       

  • 相关阅读:
    asp.net mvc 中直接访问静态页面
    (转)asp.net文本编辑器(FCKeditor)
    (转)后缀为 ashx 与 axd 的文件有什么区别
    最全的ASP.NET开源CMS汇总
    打造属于自己的设计模式
    分布式文件系统应用(上篇 理论)
    结合项目实例 回顾传统设计模式(一)策略模式
    动态方法与动态代理(上篇)
    分布式文件系统应用(下篇 实践)
    关于领域驱动设计与面向数据库设计
  • 原文地址:https://www.cnblogs.com/daybreaking/p/9426069.html
Copyright © 2011-2022 走看看