萌新求助
查看原帖
萌新求助
155767
Tarsal楼主2020/8/2 16:16

本地可以过样例 但是放落谷IDE样例就会Wa

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <cmath>
#define maxn 50010
#define maxm 1000010
#define ls x << 1
#define rs x << 1 | 1
#define inf 10000000000
#define inc(i) (++ (i))
#define dec(i) (-- (i))
// #define mid ((l + r) >> 1)
//#define int long long
#define XRZ 212370440130137957
#define debug() puts("XRZ TXDY");
#define mem(i, x) memset(i, x, sizeof(i));
#define Next(i, u) for(register int i = head[u]; i ; i = e[i].nxt)
#define file(x) freopen(#x".in", "r", stdin), freopen(#x".out", "w", stdout);
#define Rep(i, a, b) for(register int i = (a) , i##Limit = (b) ; i <= i##Limit ; inc(i))
#define Dep(i, a, b) for(register int i = (a) , i##Limit = (b) ; i >= i##Limit ; dec(i))
int dx[10] = {1, -1, 0, 0};
int dy[10] = {0, 0, 1, -1};
using namespace std;
inline int read() {
    register int x = 0, f = 1; register char c = getchar();
    while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
    while(c >= '0' && c <= '9') x = x * 10 + c - 48, c = getchar();
    return x * f;
} int n; string s; bool vis[30];
signed main() { int T = read();	
	while(T --) { scanf("%d ", &n); getline(cin, s); int num = 0, len = s.size(), std, flag = 0, QwQ = 0; mem(vis, 0);
//		cout << endl;
		Rep(i, 0, len - 1) if(s[i] == '(') {
			if(s[i + 1] == 'n') std = 100 + s[i + 3] - '0';
			else std = s[i + 1] - '0';// printf("%c %d\n", s[i + 1], std);
		}// printf("std : %s %d\n", s, n);
		Rep(k, 1, n) { getline(cin, s); len = s.size();// cout << "QwQ" << s << endl;//printf("sssssssss%s\n", s);
			if(flag) continue;
			if(s[0] == 'E') { flag = 1; continue;}
			else {// printf("flag : %d %d\n", flag, vis[s[2] - 'a']);
//				cout << endl;
//				cout << n << " " << flag << " " << QwQ << " " << num << " " << s[3] << endl;
				if(vis[s[2] - 'a']) QwQ = flag = 1;//, debug()
				else { vis[s[2] - 'a'] = 1;// printf("zz: %d %c %c\n", vis[s[2] - 'a'], s[4], s[len - 1]);
					if(s[4] == 'n' && s[len - 1] != 'n') flag = 1;
					else if(s[len - 1] == 'n' && s[4] != 'n') num ++;
					else if(s[4] > s[len - 1]) flag = 1;
				}// debug()
			}
		}
		//printf("%d %d %d %d %d\n", n, flag, QwQ, num, std);
		if(QwQ) puts("ERR");
		else if(flag == 0) puts("ERR");
		else {
			if(std > 100) {
				if(std == num + 100) puts("Yes");
				else puts("No");
			}
			else {
				if(num == 0) puts("Yes");
				else puts("No");
			}
		}
	}
	return 0;
}

2020/8/2 16:16
加载中...