——————————————————————————————————————————————————
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; } }
原文地址:https://www.cnblogs.com/SFWR-YOU/p/11391259.html
时间: 2024-10-09 19:50:27