社区讨论

关于洛谷J组T2民间数据

灌水区参与者 5已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@m2q3zwyx
此快照首次捕获于
2024/10/26 20:00
去年
此快照最后确认于
2025/11/04 16:01
4 个月前
查看原帖
可能有错当我放屁
本人由于T2不会正解写了个纯dfs,但是在洛谷自测A了,这个范围纯dfs肯定T,求问是不是数据有点弱
代码:
CPP
#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;
}

回复

7 条回复,欢迎继续交流。

正在加载回复...