当前位置: 代码迷 >> 综合 >> Educational Codeforces Round 65 (Rated for Div. 2)D. Bicolored RBS(栈的应用)
  详细解决方案

Educational Codeforces Round 65 (Rated for Div. 2)D. Bicolored RBS(栈的应用)

热度:42   发布时间:2023-12-26 09:38:57.0

题目链接:http://codeforces.com/contest/1167/problem/D

【题意】给你一串长度为n(n是偶数)的括号序列,要把这个序列涂成两种颜色,从而分成两部分,使得两部分左右括号都能完全匹配并且要求最大值最小;

【分析】

一开始想记录连续的相同括号数,但是没处理好....

然后还是用栈做,之前遇到的这种括号匹配问题好像都用栈或队列处理的?

用两个栈,分别表示两个颜色,都只存左括号,然后进行括号的匹配即括号的进栈出栈;

【代码】

#include<bits/stdc++.h>
using namespace std;int main()
{int n;scanf("%d",&n);string str; cin>>str;string ans="";stack<char>st1,st2;for(int i=0;i<n;++i){if(str[i]=='('){if(st1.size()>st2.size()){st2.push(str[i]);ans+='1';}else{st1.push(str[i]);ans+='0';}}else{if(st1.size()>st2.size()){st1.pop();ans+='0';}else{st2.pop();ans+='1';}}}cout<<ans<<endl;return 0;
}

 

  相关解决方案