• luogu P3952 时间复杂度 模拟


    题目链接

    luogu P3952 时间复杂度

    题解

    直接模拟即可
    注意不要直接return
    我真是naive
    ......

    代码

    #include<map> 
    #include<stack> 
    #include<cstdio> 
    #include<cstring> 
    #include<algorithm> 
    #define rep(a,b,c) for(int a = b;a <= c;++ a) 
    #define gc getchar()
    #define pc putchar
    inline int read() { 
        int x = 0,f = 1; 
        char c = gc; 
        while(c < '0' || c > '9') { if(c == '-') f =- 1;c = gc;}  
        while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = gc; 
        return x * f; 
    } 
    void print(int x) { 
        if(x < 0) { 
            pc('-'); 
            x = -x; 
        } 
        if(x >= 10) print(x / 10); 
        pc(x % 10 + '0'); 
    } 
    char s[10007]; 
    #define len(x) strlen(x + 1) 
    std::map<char,bool>mp; 
    std::stack<char>stk; 
    std::map<char,bool> cant; 
    std::map<char,bool> isnot; 
    void solve() {
        int L = read(); 
        int l; 
        scanf("%s",s + 1); 
        l = len(s); 
        int ben = 0; 
        bool fs = false; 
        rep(i,1,l) { 
            if(s[i] == 'n') fs = true; 
            if(s[i] <= '9' && s[i] >= '0') ben = ben * 10 + s[i] - '0'; 
        } 
        int belnow = 0,bel = 0; 
        int flag = 0; 
        bool QAQ = false; 
        while(L --) { 
            scanf("%s",s + 1); 
            if(s[1] == 'F') { 
                int now = 0,nowto = 0; 
                char t,p = '%'; 
                rep(T,1,3) { 
                    if(T == 1) { 
                        scanf("%s",s + 1); 
                        if(mp[s[1]]) { 
                            //puts("ERR"); 
                            QAQ = true; 
                            //continue; 
                        } 
                        mp[s[1]] = 1; 
                        t = s[1]; 
                        stk.push(s[1]); 
                    } 
                    if(T == 2) { 
                        scanf("%s",s + 1); 
                        if(s[1] < '0' || s[1] > '9') { 
                            p = s[1]; 
                            continue; 
                        } 
                        l = len(s); 
                        rep(i,1,l) 
                            if(s[i] <= '9' && s[i] >= '0') now = now * 10 + s[i] - '0'; 
                    } 
                    if(T == 3) { 
                        scanf("%s",s + 1); 
                        l = len(s); 
                        if(l == 1 && (s[1] > '9' || s[1] < '0')) { 
                            if(s[1] == p) continue; 
                            belnow ++; 
                            if(!flag) bel = std::max(bel,belnow); 	
                        } else {  
                            isnot[t] = 1; 
                            rep(i,1,l) 
                            if(s[i] <= '9' && s[i] >= '0') nowto = nowto * 10 + s[i] - '0'; 
                            if(now > nowto || p != '%') { 
                                flag  ++; 
                                cant[t] = 1; 
                            } 
                        } 
                    } 
                } 
                
            } else {  
                if(!stk.size()) { 
                    QAQ = true; 
                    continue; 
                 } 
                //if(QAQ) continue; 
                if(cant[stk.top()]) flag --; 
                if(!isnot[stk.top()]) belnow --; 
                isnot[stk.top()] = 0; 
                cant[stk.top()] = 0; 
                mp[stk.top()] = 0; 
                if(stk.size()) stk.pop(); 
            } 
        } 
        if(QAQ || stk.size()) { 
            puts("ERR"); 
            return ; 
        } 
        if(!fs) { 
            puts(bel == 0 ? "Yes" : "No"); 
        } 
        else puts(bel == ben ? "Yes" : "No"); 
    } 
    int main() { 
        int T = read(); 
        while(T --) { 
            mp.clear(); 
            isnot.clear(); 
            cant.clear(); 
            while(stk.size()) stk.pop(); 
            solve(); 
        } 
        return 0; 
    } 
    
    
  • 相关阅读:
    IOS7笔记-10、多线程、滚动视图
    IOS7笔记-8、协议、block、动画
    IOS7笔记- 7、视图、绘制、手势识别
    IOS7笔记-6、控制器多态性、导航控制器、选项卡栏控制器
    IOS7笔记-5、视图控制器生命周期
    C# DevExpress之GridView同步滚动条记录方法
    C# 隐藏TabControl标签
    VC++ 如何识别系统语言类别
    我的免费空间网站
    慕课网-Java入门第一季-7-5 Java 中带参无返回值方法的使用
  • 原文地址:https://www.cnblogs.com/sssy/p/9889172.html
Copyright © 2020-2023  润新知