Codeforces Round #653 (Div. 3) C. Move Brackets (1000)

C. Move Brackets
题意:
给一个只含 ‘(’ 和 ‘)’ 字符串,能选中任意一个字符移动到字符串最前面或者字符串最后面,问最少需要这样操作几次使得字符串中的括号全都是常规的括号

思路:
规定 ‘(’ 为 +1, ‘)’ 为 -1,要么求前缀和为-1的次数,要么求后缀和为+1的次数,都可以,直接暴力

代码附:

#pragma GCC optimize("Ofast","inline","-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#define int long long
using namespace std;
using ll = long long ;
const int N = 2e5+10;
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t,n;
    cin>>t;
    while(t--)
    {
        cin>>n;
        string ss;
        cin>>ss;
        int ans=0,pre=0;
        for(int i=0; ss[i]; ++i)
        {
            if(ss[i]=='(')
                pre++;
            else
                pre--;
            if(pre<0)
            {
                pre=0;
                ans++;
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}

展开阅读全文
©️2020 CSDN 皮肤主题: 岁月 设计师: pinMode 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值