关于洛谷J组T2民间数据
  • 板块灌水区
  • 楼主_UniqueGirl_
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/10/26 19:59
  • 上次更新2024/10/26 20:37:14
查看原帖
关于洛谷J组T2民间数据
720872
_UniqueGirl_楼主2024/10/26 19:59

可能有错当我放屁

本人由于T2不会正解写了个纯dfs,但是在洛谷自测A了,这个范围纯dfs肯定T,求问是不是数据有点弱

代码:

#include<iostream>
#include<cstdio>
using namespace std;

int n,m,xx,yy,d,k,t,rp;
char a[1005][1005];
int vis[1005][1005];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};

void dfs(int zx,int zy,int zd,int kk){
	vis[zx][zy]=1;
	if(kk==k) return;
	kk++;
	//if(zx<1||zx>n||zy<1||zy>m||a[zx][zy]=='x') zd=(zd+1)%d;
	int x=zx+dx[zd],y=zy+dy[zd];
//	cout<<x<<" "<<y<<" "<<zd<<" "<<kk<<endl;
	if(x>=1&&x<=n&&y>=1&&y<=m&&a[x][y]!='x') zx=x,zy=y;
	else zd=(zd+1)%4;
	dfs(zx,zy,zd,kk);
}

int main(){
	cin>>t;
	while(t--){
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				vis[i][j]=0;
		rp=0; 
		cin>>n>>m>>k;
		cin>>xx>>yy>>d;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				cin>>a[i][j];
		dfs(xx,yy,d,0);
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				if(vis[i][j]) rp++;
//		for(int i=1;i<=n;i++){
//			for(int j=1;j<=m;j++)
//				cout<<vis[i][j]<<" ";
//			cout<<endl;
//		}
		cout<<rp<<endl;
	} 
	return 0;
}
2024/10/26 19:59
加载中...