P3952 时间复杂度

Posted sfwr-you

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
    

 

以上是关于P3952 时间复杂度的主要内容,如果未能解决你的问题,请参考以下文章

P3952 时间复杂度

[Luogu] P3952 时间复杂度

洛谷P3952 时间复杂度

luogu P3952 时间复杂度题解

洛谷 P3952 时间复杂度

luogu P3952 时间复杂度题解