Codeforces Round #653 (Div. 3)-C. Move Brackets(括号匹配,栈的运用)

    技术2022-07-11  76

    题目链接

    题意:

    给你一个乱序括号序列,你可以将序列的每个字符移动到序列开头或末尾,求将序列变为匹配序列的最少移动总次数。

    思路:

    将括号序列放入栈中,pop掉可以匹配的,剩下的括号数除以二就是结果。

    知识点:

    栈(stack)的基础运用。

    代码:

    #include<bits/stdc++.h> using namespace std; #define int long long #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); const int N=2e5+5; const int mod=998244353; const int inf=0x7fffffff; const double pi=3.1415926535; using namespace std; signed main() { IOS; int t; cin>>t; while(t--) { stack<char>q; string s; int n,sum1=0,sum2=0,ass=0; cin>>n; cin>>s; for(int i=0;i<n;i++) { if(q.empty()) q.push(s[i]); else if(s[i]==')'&&q.top()=='(') { q.pop(); } else { q.push(s[i]); } } cout<<q.size()/2<<endl; } return 0; }
    Processed: 0.013, SQL: 9