题解 CF1214C 【Bad Sequence】

水题

思路:

  1. 如果 $n$ 是奇数肯定不行(一对括号两个,只有偶数个总数可能)。

  2. 删除所有匹配的上的括号。

  3. 统计左括号和右括号的总数,如果左括号数目不等于右括号数目那肯定不行。

  4. 如果栈里剩下的左括号少于 $2$ 个,那可以,否则不行。

code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include
using namespace std;
string s;
stack<char> sta;
int main(){
int n;
cin>>n>>s;
if(n%2==1) cout<<"No"<<endl;
else{
int sumleft=0,sumright=0;
for(int i=0;i
if(s[i]=='(') sta.push(s[i]);
else if(s[i]==')'&&!sta.empty()) sta.pop();
if(s[i]=='(') sumleft++;
else sumright++;
}
if(sta.empty()&&sumleft==sumright) cout<<"Yes"<<endl;
else {
if(sta.size()>1||sumleft!=sumright) cout<<"No"<<endl;
else cout<<"Yes"<<endl;
}
}
return 0;
}
0%