题解 CF1023C 【Bracket Subsequence】

MorsLin

2018-08-19 09:47:55

Solution

$b$为答案字符串,我们枚举$a$数组中的每一个括号,每扫到一个括号,就把它加入$b$里,如果为左括号,$cnt{+}{=}1$,当$cnt==m/2$就跳出循环,然后从后面补右括号就行了 没初始化$b$数组,FST了…… QAQ ```cpp #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main(){ int n,m; cin>>n>>m; m/=2; char a[200010],b[200010]; cin>>a; memset(b,0,sizeof(b)); int len=strlen(a)-1,tot=0,cnt=0; for(int i=0;i<=len;i++){ if(a[i]=='('){ b[tot++]='('; cnt++; } if(cnt==m) break; if(a[i]==')'){ b[tot++]=')'; } } for(int i=tot;i<m*2;i++) b[i]=')'; cout<<b; return 0; } ```