DEBUG几小时无果。。。求调。。。。。
  • 板块学术版
  • 楼主uFTvL9
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/7/18 16:46
  • 上次更新2023/10/27 19:42:02
查看原帖
DEBUG几小时无果。。。求调。。。。。
411963
uFTvL9楼主2022/7/18 16:46

P3952

/*
#pragma GCC optimize (3, "Ofast", "inline")
#pragma GCC optimize ("unroll-loops")
#pragma GCC target   ("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize ("no-stack-protector")
*/

/*
---------------------------* T I P S *-----------------------------
    Date:    Jul.18th           
	Author:  uFTvL9(xwzy)
    message: Simulation
    Title:   complexity.cpp/.in/.out
    Score:   0
    Score':  
    tips:    complexity simulation problem
-------------------------------------------------------------------
*/
#include <bits/stdc++.h>
using namespace std;

inline int work();
inline bool complie_(char[105][10], int);
inline bool complie_FE(char[105][10], int);
inline bool complie_Variable(char[105][10], int);
inline int check_Tcomplexity(char[105][10], int);
inline bool is_digit(const char);

int main(void) {
//#if !ONLINE_JUDGE
    freopen("complexity.in", "r", stdin);
    freopen("complexity.out", "w", stdout);
//#endif
	return work();;
}

inline int work() {
	int t; cin >> t;
	while(t--) {
		int L; cin >> L;
		if(L <= 1) {
			cout << "ERR" << endl;
			continue;
		}
		char program[L][10];
		char Tcomplexity_input[10];
		cin >> Tcomplexity_input;
		for(int i = 0; i < L; i++)
			cin >> program[i];
		bool flag = complie_(program, L);
		if(flag == false) {
			cout << "ERR" << endl;
			continue;
		}
		int power_N = check_Tcomplexity(program, L);
		if(power_N == 0) {
			int p = strlen(Tcomplexity_input);
			for(int i = 0; i < p; i++) {
				if(Tcomplexity_input[i] == '('){
					if(Tcomplexity_input[i + 1] != '1') {
						cout << "No" << endl;
						continue;
					}
				}
			}
		}
		if(power_N != 0) {
			int p = strlen(Tcomplexity_input);
			for(int i = 0; i < p; i++) {
				if(Tcomplexity_input[i] == '^') {
					if(Tcomplexity_input[i + 1] != (char)(power_N + '0')) {
						cout << "No" << endl;
						continue;
					}
				}
			}
		}
		cout << "Yes" << endl;
	}
	return 0;
}

/* functions */
inline bool is_digit(const char ch) {
		return '0' <= ch && ch <= '9';
	}

inline bool complie_(char program[105][10], int L) {
	bool flag = complie_FE(program, L);
	if(flag == false)
		return false;
	flag = complie_Variable(program, L);
	if(flag == false)
		return false;
	return true;
}
inline bool complie_FE(char program[105][10], int L) {
	char stack_FE[50]; int top = 0;
	if(program[0][0] != 'F')
			return false;
	stack_FE[top] == 'F';
	top++;
	for(int i = 1; i < L; i++) {
		if(program[i][0] == 'F') {
			stack_FE[top] == 'F';
			top++;
		}
		else {
			if(top == 0)
				return false;
			if(program[i][0] = 'E') 
				top--;
			else
				return false;
		}
	}
	return false;
}
inline bool complie_Variable(char program[105][10], int L) {
	char stack_var_list[100]; int top = 0;
	for(int i = 0; i < L; i++) {
		if(program[i][0] == 'F') {
			for(int j = 0; j < top; j++)
				if(program[i][2] == stack_var_list[j])
					return false;
			stack_var_list[top] = program[i][2];
			top++;
		}
		if(program[i][0] == 'E') {
			if(top == 0)
				return false;
			top--;
		}
	}
	return true;
}
inline int check_Tcomplexity(char program[105][10], int L) {
	int power_N = 0;
	int Maxpower = 0;
	for(int i = 0; i < L; i++) {
		if(program[i][0] == 'F') {
			if(program[i][6] != 'n')
				power_N += 0;
			if(program[i][4] == 'n')
				power_N += 1;
		}
		if(program[i][0] == 'E') {
			Maxpower = max(Maxpower, power_N);
			power_N = 0;
		}
	}
	return Maxpower;
}
/* AREA LINE */
2022/7/18 16:46
加载中...