82pts求调玄关
查看原帖
82pts求调玄关
928418
MLE_Automaton算法萌新楼主2024/5/18 22:05
#include <iostream>
#include <algorithm>
#include <stack>
#include <cstring>
#define rep(i, a, b) for(int i=(a);i<=(b);i++)
#define pre(i, a, b) for(int i=(a);i>=(b);i--)
#define INF 0x7fffffff
#define nINF 0x80000000
using namespace std;

struct node
{
    int n, var, valid;
};
int T, n; string c; bool vl[130];
int main()
{
    cin >> T;
    while (T --)
    {
        memset(vl, 0, sizeof vl);
        cin >> n >> c;
        int now = 0, ans = 0, valid = 0;
        stack<node> s;
        while (n --)
        {
            string t;
            cin >> t;
            if (t == "F")
            {
                string t1, t2, t3;
                cin >> t3;
                if (vl[t3[0]]) break;
                vl[t3[0]] = 1;
                cin >> t1 >> t2;
                if (isdigit(t1[0]) && !isdigit(t2[0]))
                    s.push({1, t3[0], 0}), now += 1 && !valid, ans = max(ans, now);
                else s.push({0, t3[0],!isdigit(t1[0]) && isdigit(t2[0]) ||
                            (isdigit(t1[0]) && isdigit(t2[0]) && stoi(t1) > stoi(t2))});
                valid += s.top().valid;
            }
            else
            {
                if (s.empty()) break;
                now -= s.top().n && !valid;
                vl[s.top().var] = 0;
                valid -= s.top().valid;
                s.pop();
            }
        }
        if (n > -1 || s.size()) puts("ERR");
        else
        {
            if ((ans == 0 && c == "O(1)") || c == ("O(n^" + to_string(ans) + ")")) puts("Yes");
            else puts("No");
        }
    }
    return 0;
}

我的代码WA了#8,#10,#8最后一个数据应是ERR,我的代码输出了No,最灵异的是,我把数据一口一口喂给它的时候,就输出了ERR 像极了吃饭

2024/5/18 22:05
加载中...