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;
}