Bracket Sequences Concatenation Problem CodeForces - 990C(括号匹配水题)

Posted wtsruvf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bracket Sequences Concatenation Problem CodeForces - 990C(括号匹配水题)相关的知识,希望对你有一定的参考价值。

明确一下  一个字符串有x左括号不匹配  和 另一个字符串有x个右括号不匹配  这俩是一定能够匹配的

脑子有点迷 emm。。。

所以统计就好了  统计x个左括号的有几个,x个右括号的有几个 然后 乘一下

如果一个串 同时存在左右括号都不匹配的情况 则忽略 因为这个串需要另外两个括号去匹配

不要忘了处理左右括号已经匹配的情况

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6+5, INF = 0x7fffffff;
typedef long long LL;
LL a[maxn], b[maxn];
string str;
int main()
{
    int n;
    cin>> n;
    int lef, rig, maxx = -INF;
    for(int i=0; i<n; i++)
    {
        cin>> str;
        int len = str.size();
        maxx = max(len, maxx);
        lef = INF;
        rig = 0;
        for(int j=0; j<len; j++)
        {
            if(str[j] == ()
                rig++;
            else
                rig--;
            lef = min(lef, rig);
        }
        if(lef < 0 && rig > lef)    //说明两边同时存在不匹配的左右括号
            continue;
        if(lef < 0)                 //有多的不匹配的左括号
            b[abs(lef)]++;
        else                        //有多的不匹配的右括号
            a[rig]++;
    }
    LL res = 0;
    for(int i=1; i<=maxx; i++)
        res += a[i] * b[i];
    res += a[0] * a[0];
    cout<< res <<endl;


    return 0;
}

 

以上是关于Bracket Sequences Concatenation Problem CodeForces - 990C(括号匹配水题)的主要内容,如果未能解决你的问题,请参考以下文章

cf1272F. Two Bracket Sequences

# codeforces 1272 F. Two Bracket Sequences(三维dp + bfs)

Bracket Sequences Concatenation Problem CodeForces - 990C(括号匹配水题)

Codeforces Round #605 (Div. 3) F. Two Bracket Sequences 三维dp

CodeForces - 5C Longest Regular Bracket Sequence

cf3D Least Cost Bracket Sequence