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 时间复杂度的主要内容,如果未能解决你的问题,请参考以下文章