#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
像极了吃饭