zoukankan      html  css  js  c++  java
  • 括号匹配(捉鬼)

    Pair: normal and paranormal

     

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<vector>
    #include<queue>
    #include<cstring>
    #include<map>
    #include<stack>
    #define mp make_pair
    #define pb push_back
    #define fi first
    #define se second
    #define pw(x) (1ll << (x))
    #define sz(x) ((int)(x).size())
    #define all(x) (x).begin(),(x).end()
    #define rep(i,l,r) for(int i=(l);i<(r);i++)
    #define per(i,r,l) for(int i=(r);i>=(l);i--)
    #define FOR(i,l,r) for(int i=(l);i<=(r);i++)
    #define eps 1e-9
    #define PIE acos(-1)
    #define cl(a,b) memset(a,b,sizeof(a))
    #define fastio ios::sync_with_stdio(false);cin.tie(0);
    #define lson l , mid , ls
    #define rson mid + 1 , r , rs
    #define ls (rt<<1)
    #define rs (ls|1)
    #define INF 0x3f3f3f3f
    #define LINF 0x3f3f3f3f3f3f3f3f
    #define lowbit(x) (x&(-x))
    #define sqr(a) a*a
    #define ll long long
    #define ull unsigned long long
    #define vi vector<int>
    #define pii pair<int, int>
    #define dd(x) cout << #x << " = " << (x) << ", "
    #define de(x) cout << #x << " = " << (x) << "
    "
    #define endl "
    "
    using namespace std;
    vector<pii>ans;
    stack< pair<char,int> > s;
    int main()
    {
        int n;
        string str;
        cin>>n;n<<=1;
        cin>>str;
        int ok=1;
        int CNT=0,cnt=0;
        rep(i,0,n){
            if(str[i]>='a'&&str[i]<='z')cnt++;else CNT++;
            if(s.empty())s.push(mp(str[i],cnt));
            else {
    //            de(str[i]);
                pair<char,int> t=s.top();
    //            de(t.fi);de(t.se);
    //            de(abs(str[i]-t));
    //            de('A'-'a');
                if(abs(str[i]-t.fi)==abs('A'-'a')){
                    if(str[i]-t.fi==('A'-'a'))ans.pb(mp(CNT,t.se));
                    else ans.pb(mp(t.se,cnt));
                    s.pop();
                }else {
                    if(str[i]>='a'&&str[i]<='z')s.push(mp(str[i],cnt));
                    else s.push(mp(str[i],CNT));
                }
            }
    //        de(s.size());
        }
    //    de(s.size());
        sort(all(ans));
        if(s.empty())rep(i,0,sz(ans))printf("%d%c",ans[i].se,i==n-1?'
    ':' ');
        else puts("Impossible");
        return 0;
    }
    View Code
  • 相关阅读:
    Redis
    Linux 软件安装
    Linux系统的目录和启动过程,Linux命令,权限控制
    虚拟机,Linux,VMware三种网络连接模式区别
    Spring Boot
    shiro和spring和springmvc的集成
    shiro
    Mybatis的逆向工程,MySQL8的数据库,8.0.11驱动的逆向工程的坑的解决方法
    jdk分析工具:jps和jstack
    如何使用jconsole(英文)
  • 原文地址:https://www.cnblogs.com/klaycf/p/9906243.html
Copyright © 2011-2022 走看看