zoukankan      html  css  js  c++  java
  • P3952 时间复杂度

    ——————————————————————————————————————————————————

    noip罕见的纯模拟题,细节还是很多的

    虽然没有看题解,但也错了很多地方

    1,Yes与YES

    2,ERR与Err,这个真的毒瘤,一个全大写一个却不是

     3,ERR后向栈中添加元素防止RE

    4,最后判断栈空、

    ————————————————————————————————————————-

    #include<bits/stdc++.h>
    using namespace std;
    int t,lne,flg[500],num[500];
    char ch[100];
    stack<int>st,bl;
    int main()
    {
        cin>>t;
        while(t--)
        {
            memset(flg,0,sizeof(flg));
            memset(num,0,sizeof(num));
            while(!st.empty())st.pop();
            while(!bl.empty())bl.pop();
            int tag=0,lj=0,tab=0,nowtab=0;
            cin>>lne>>ch;
            if(lne%2!=0)lj=1;
            if(ch[2]-'0'!=1)for(int i=4;i<strlen(ch)-1;i++)tag=tag*10+ch[i]-'0';
            while(lne--)
            {
                char a,b;
                int cc=0,dd=0;
                cin>>a;
                if(a=='F'){
                    cin>>b;
                    cin>>ch;
                    if(ch[0]<='9'&&ch[0]>='0')for(int i=0;i<strlen(ch);i++)cc=cc*10+ch[i]-'0';
                    cin>>ch;
                    if(ch[0]<='9'&&ch[0]>='0')for(int i=0;i<strlen(ch);i++)dd=dd*10+ch[i]-'0';
                    if(flg[b-'0'])lj=1;
                    if(!cc&&!dd)st.push(0);
                    if(!cc&&dd)st.push(-1);
                    if(!dd&&cc)st.push(1);
                    if(dd&&cc){
                        if(cc>dd)st.push(-1);
                        else st.push(0);
                    }
                    flg[b-'0']=1;
                    bl.push(b-'0');
                }
                if(a=='E'){
                    if(st.empty()){
                    lj=1;for(int i=1;i<=100;i++)st.push(i),bl.push(i);    
                    }
                    int nc=st.top(),nb=bl.top(),val=num[nb];
                    st.pop();
                    bl.pop();
                    flg[nb]=0;
                    num[nb]=0;
                    if(nc!=-1){
                    if(st.empty())tab=max(tab,val+nc);    
                    else num[bl.top()]=max(val+nc,num[bl.top()]);
                    }
                }
            }
            if(!st.empty())lj=1;
            if(lj)cout<<"ERR";
            else {
                if(tab==tag)cout<<"Yes";
                else cout<<"No";
            }
            cout<<endl;
        }
    }
  • 相关阅读:
    Golang学习
    Golang学习
    基础知识
    Golang学习
    基础知识
    hyper-v server 2016安装,客户端远程管理
    inotifywait命令
    CENTOS 7发送邮件测试
    NFS学习
    awk命令
  • 原文地址:https://www.cnblogs.com/SFWR-YOU/p/11391259.html
Copyright © 2011-2022 走看看