27分,AC#1#2#3,求调
查看原帖
27分,AC#1#2#3,求调
1260978
xycsc23楼主2024/10/4 17:37

代码如下:

#include<bits/stdc++.h>
using namespace std;
struct node{
    char c;
    int r;
};
int gi(string a){
    int s=0;
    for(int i=0;i<a.size();i++)
        s=s*10+(a[i]-'0');
    return s;
}
void slove(){
    stack<node> s;
    int l, w;
    char twob;
    scanf("%d O(%c", &l, &twob);
    if(twob=='1')
        w=0;
    else
        scanf("^%d", &w);
    scanf(")\n");
    int ma=0, m=0, g=0;
    map<char, bool> mp;
    bool f=false;
    while(l--){
        string sb;
        getline(cin, sb);
        if(sb[0]=='F'){
            // cout<<"qwq";
            if(mp.count(sb[2]) && mp[sb[2]]){
                f=true;
            }
            if(f)
                continue;
            
            if(g){
                g++;
                continue;
            }
            char r=sb[2];
            mp[r]=true;
            int x, y;
            if(sb[4]=='n')
                x=101, sb=sb.substr(6);
            else
                x=gi(sb.substr(4, sb.find(' ', 4)-4)), sb=sb.substr(sb.find(' ', 4)+1);
            if(sb=="n")
                y=101;
            else
                y=gi(sb);
            if(x==101){
                if(y==101)
                    s.push((node){0, r});
                else{
                    s.push((node){-1, r});
                    g=1;
                }
            }
            else{
                if(y==101){
                    s.push((node){1, r});
                    m++;
                }
                else if(x<y)
                    s.push((node){0, r});
                else
                    s.push((node){-1, r}), g=1;
            }
            ma=max(ma, m);
        }
        else{
            if(s.empty()){
                f=true;
            }
            if(f)
                continue;
            if(s.top().r==-1)
                g--;           
            else
                m-=s.top().r;
            mp[s.top().c]=false;
            s.pop();
        }
    }
    if(f || !s.empty())
        puts("ERR");
    else if(ma==w)
        puts("Yes");
    else
        puts("No");
}
int main(){
    int t;
    cin>>t;
    while(t--)
        slove();
    return 0;
}
2024/10/4 17:37
加载中...