为什么搜索都会WA啊
查看原帖
为什么搜索都会WA啊
782898
Time_Limit_Exceed楼主2022/11/29 10:04
using namespace std;
const int N=31;
const int Mod=998244353;
int T,id,n,m,c,f;
char ans[N][N];
bool vis[N][N];
bool whec[N][N][N][N][N],whef[N][N][N][N][N][N];
int cntc,cntf;
void dfsc(int x1,int x2,int y0,int y1,int y2){
	if(x2>n||y1>m||y2>m||x2-x1==1||y1==y0||y2==y0){
		return;
	}
	if(whec[x1][x2][y0][y1][y2]) return;
	whec[x1][x2][y0][y1][y2]=1;
	bool f=1;
	for(int i=y0;i<=y1;i++){
		if(vis[x1][i]){
			f=0;
			break;
		}
	}
	if(f){
		for(int i=y0;i<=y2;i++){
			if(vis[x2][i]){
				f=0;
				break;
			}
		}
	}
	if(f){
		for(int i=x1;i<=x2;i++){
			if(vis[i][y0]){
				f=0;
				break;
			}
		}
	}
	if(f){
		cntc=(cntc+1)%Mod;
		//cout<<x1<<" "<<x2<<" "<<y0<<" "<<y1<<" "<<y2<<endl;
	}
	dfsc(x1+1,x2,y0,y1,y2);
	dfsc(x1,x2+1,y0,y1,y2);
	dfsc(x1,x2,y0+1,y1,y2);
	dfsc(x1,x2,y0,y1+1,y2);
	dfsc(x1,x2,y0,y1,y2+1);
}
void dfsf(int x1,int x2,int x3,int y0,int y1,int y2){
	if(x3>n||y1>m||y2>m||x2-x1==1||x3==x2||y1==y0||y2==y0){
		return;
	}
	if(whef[x1][x2][x3][y0][y1][y2]) return;
	whef[x1][x2][x3][y0][y1][y2]=1;
	bool f=1;
	for(int i=y0;i<=y1;i++){
		if(vis[x1][i]){
			f=0;
			break;
		}
	}
	if(f){
		for(int i=y0;i<=y2;i++){
			if(vis[x2][i]){
				f=0;
				break;
			}
		}
	}
	if(f){
		for(int i=x1;i<=x3;i++){
			if(vis[i][y0]){
				f=0;
				break;
			}
		}
	}
	if(f){
		cntf=(cntf+1)%Mod;
		//cout<<x1<<" "<<x2<<" "<<x3<<" "<<y0<<" "<<y1<<" "<<y2<<endl;
	}
	dfsf(x1+1,x2,x3,y0,y1,y2);
	dfsf(x1,x2+1,x3,y0,y1,y2);
	dfsf(x1,x2,x3+1,y0,y1,y2);
	dfsf(x1,x2,x3,y0+1,y1,y2);
	dfsf(x1,x2,x3,y0,y1+1,y2);
	dfsf(x1,x2,x3,y0,y1,y2+1);
}
int main(){
	cin>>T>>id;
	while(T--){
	    memset(vis,0,sizeof(vis));
		cin>>n>>m>>c>>f;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>ans[i][j];
				if(ans[i][j]=='1') vis[i][j]=1;
			}
		}
		if(c==0&&f==0){
			cout<<"0 0"<<endl;
			continue;
		}
		cntc=0;
		if(!c) cout<<"0 ";
		else{
			dfsc(1,3,1,2,2);
			cout<<cntc<<" ";
		}
		if(!f){
			cout<<0<<endl;
			continue;
		}
		cntf=0;
		dfsf(1,3,4,1,2,2);
		cout<<cntf<<endl;
	}
	return 0;
}
2022/11/29 10:04
加载中...