91pts WA On #10求调
查看原帖
91pts WA On #10求调
1015347
MingDynasty楼主2025/6/16 17:43

我的代码:

#include<bits/stdc++.h>
using namespace std;
char op[111][11][11];
char s[222];
set<string> v;
set<char> vis;
int t,m,ans;
vector<int> son[111];
int dfs(int u){
	int comp=0;
	if(vis.count(op[u][1][0])) return -1;
	vis.insert(op[u][1][0]);
	for(auto v:son[u]){
		int comp2=dfs(v);
		if(comp2==-1) return -1;
		comp=max(comp,comp2);
	}
	if(op[u][2][0]=='n'&&op[u][3][0]=='n'){
		;
	}else if(op[u][2][0]=='n') comp=0;
	else if(op[u][3][0]=='n') comp+=1;
	else{
		int l,r;
		sscanf(op[u][2],"%d",&l);	
		sscanf(op[u][3],"%d",&r);	
		if(l>r) comp=0;
	}
	vis.erase(op[u][1][0]);
	return comp;
}
void solve(){
	cin>>m>>s;
	v.clear();
	for(int i=0;i<m;i++){
		cin>>op[i][0];
		if(op[i][0][0]=='F') cin>>op[i][1]>>op[i][2]>>op[i][3];
		son[i].clear();
	}
	son[m].clear();
	stack<int> g;
	g.push(m);
	for(int i=0;i<m;i++){
		if(op[i][0][0]=='F') son[g.top()].push_back(i),g.push(i);
		else {
			if(g.top()==m) {
				cout<<"ERR\n";
				return;
			}
			g.pop();
		}
	}
	if(g.top()!=m){
		cout<<"ERR\n";
		return;
	}
	op[m][1][0]='-';
	int res=dfs(m),ans=0;
	if(s[2]=='n') sscanf(s,"O(n^%d)",&ans);
	if(res==-1) cout<<"ERR\n";
	else if(ans==res) cout<<"Yes\n";
	else cout<<"No\n";
}
int main(){
	cin>>t;
	while(t--) solve();
	return 0;
}

调了很久一直91pts,WA #10,跪求各位dalao调我的代码,thx!

回复时请@本蒟蒻,感谢!

2025/6/16 17:43
加载中...