求救!!
查看原帖
求救!!
913282
BL8083楼主2023/5/16 17:58

样例跑的没问题,但是全TLE了,麻烦问下这段代码还有没有办法可以救一下

#include <iostream>
#define MAXN 20002
using namespace std;
struct wine{
	int op,rp;//op: operation,rp:red paper
}we[MAXN];
int t,n,m;
void Op1(int x){
	we[x].rp++;
}
void Op2(int x){
	for(int i = 1;i <= n;i++){
		if(i != x){
			we[i].rp++;
		}
	}
}
int getNone(){
	for(int i = 1;i <= n;i++){
		if(we[i].rp == 0){
			cout<<-1<<endl;
			break;
		}
    }
    
}
int getAll(int i){
	int test = 0;
	for(int i = 1;i <= n;i++){
		if(we[i].rp != 0){
			test++;
		}
	}
	if(test >= n){
		return i;
	}else{
		return 0;
	}
}
void clear(){
	for(int i = 1;i <= n;i++){
	   we[i].op = 0;
	   we[i].rp = 0;
	}
	n = 0;
	m = 0;
}
int main(){
	cin>>t;
	for(int i = 1;i <= t;i++)//input test group
	{
		cin>>n>>m;
		
		//input
		for(int i = 1;i <= m;i++){
			int tmp,x;
			cin>>tmp>>x;
			we[x].op = tmp;
		}
		//op
		for(int i = 1;i <= m;i++){
			if(we[i].op == 1){
				Op1(i);
			}else{
				Op2(i);
			}
			//test whether it can AC the request
			int tmp = getAll(i);
			if(tmp != 0){
				cout<<tmp<<endl;
				break;
			}
		}
		//test whether there is still at least one 0 left
		getNone();
		//clear and ready for next running
		clear();
	}
	return 0;
}
2023/5/16 17:58
加载中...