zoukankan      html  css  js  c++  java
  • 20171108 模拟题 T1

    T1

    为什么要写这个题呢?

    我只是想说:链表也能做!!

    QAQAQ

    可是……细节什么的考场写的好晕……

    (其实我不想解释代码了QAQAQ

    Codes:

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    
    using namespace std;
    const int N = 100000 + 10;
    char s[N];
    int ans,ans1,ans2;
    int pre[N],nxt[N];
    int main(){
        //freopen("shower.in","r",stdin);
        //freopen("shower.out","w",stdout);
        scanf("%s",s + 1);
        int len = strlen(s + 1);
        for(int i = 1;i <= len;++ i){
            pre[i] = i - 1;
            nxt[i - 1] = i;
        }
        nxt[len] = len + 1;
        pre[len + 1] = len;
        if(s[1] != '(') ans ++;
        if(s[len] != ')') ans ++;
        s[1] = '(',s[len] = ')';
        for(int i = 1;i < len;i = nxt[i]){
            if(pre[i] == 0 && s[i] == ')'){
                ans ++;
                s[i] = '(';
            } 
            if(nxt[i] == len + 1 && s[i] == '('){
                ans ++;
                s[i] = ')';
            }
            if(s[nxt[i]] == ')' && s[i] == '('){
                nxt[pre[i]] = nxt[nxt[i]];
                pre[nxt[nxt[i]]] = pre[i];
            }
            if(s[pre[i]] == '(' && s[i] == ')'){
                nxt[pre[pre[i]]] = nxt[i];
                pre[nxt[i]] = pre[pre[i]];
            }
        }
        int sum = 0;
        for(int i = 0;i < len + 1;i = nxt[i]){
            if(s[nxt[i]] == '('){
                 sum ++;
            }
        }
        cout << ans + (sum / 2) << '
    ';
        return 0;
    }
  • 相关阅读:
    活动的生命周期
    活动
    开始编程前的准备工作
    数组转List
    Word根据模板生成数据
    Excel根据模板生成数据
    php取年份区间
    世界 国家 省份 sql
    相册处理,php中获取一组前缀相同的元素值
    mysql添加字段
  • 原文地址:https://www.cnblogs.com/Loizbq/p/7806325.html
Copyright © 2011-2022 走看看