CF 5 C. Longest Regular Bracket Sequence

来源:互联网 发布:开机windows无法加载 编辑:程序博客网 时间:2024/05/16 07:50

题目:Longest Regular Bracket Sequence

思路:简单dp


#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>#include <stack>using namespace std;#define maxn 1000010int dp[maxn];stack<int>st;int main(){    while(!st.empty())        st.pop();    string s;    cin>>s;    for(int i=0;i<s.size();i++)    {        if(s[i]=='(')            st.push(i);        else        {            if(!st.empty())            {                int tmp=st.top();                st.pop();                if(tmp)                    dp[i]=dp[tmp-1]+i-tmp+1;                else                    dp[i]=dp[0]+i-tmp+1;            }        }    }    int ans=0,cnt=1;    for(int i=0;i<s.size();i++)    {        if(dp[i]>ans)        {            cnt=1;            ans=dp[i];        }        else if(dp[i]==ans)            cnt++;    }    if(ans==0)        cout<<"0 1"<<endl;    else        cout<<ans<<" "<<cnt<<endl;    return 0;}


原创粉丝点击