码迷,mamicode.com
首页 > 其他好文 > 详细

【Codeforces Round #459 (Div. 2) C】The Monster

时间:2018-01-30 17:06:23      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:define   ifd   names   允许   ret   contest   font   space   force   

【链接】 我是链接,点我呀:)
【题意】


在这里输入题意

【题解】


左括号看成1 右括号看成-1 设置l,r表示前i个数的和的上下界
遇到 左括号 l和r同时加1
遇到右括号 同时减1
遇到问号 因为问号可以为1或-1所以l减1而r加1
如果在某个时刻r小于0了 就说明再也不能继续了 因为说明左括号和问号比右括号来得少了

如果l<0则把l置为0,因为不允许和出现<0的情况

否则如果l等于0就说明有一种方法能让前i个数的和为0
当然当前枚举的序列长度要为偶数

【代码】

#include <bits/stdc++.h>
using namespace std;

const int N = 5e3;

char s[N+10];
int n;
int main(){
    #ifdef LOCAL_DEFINE
        freopen("rush_in.txt", "r", stdin);
    #endif
    ios::sync_with_stdio(0),cin.tie(0);
    cin >>(s+1);
    n = strlen(s+1);
    int ans = 0;
    for (int i = 1;i <= n;i++){
        int l = 0,r = 0;
        for (int j = i;j <= n;j++){
            if (s[j]=='('){
                l++,r++;
            }else if (s[j]==')'){
                l--,r--;
            }else if (s[j]=='?') {
                l--,r++;
            }
            if (r<0) break;
            if (l<0) l = 0;
            if (l==0 && ((j-i+1)%2==0)) ans++;
        }
    }
    cout<<ans<<endl;
    return 0;
}

【Codeforces Round #459 (Div. 2) C】The Monster

标签:define   ifd   names   允许   ret   contest   font   space   force   

原文地址:https://www.cnblogs.com/AWCXV/p/8384019.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!