在洛谷是A了,但是其他OJ的数据只有80pts,求大佬指点
查看原帖
在洛谷是A了,但是其他OJ的数据只有80pts,求大佬指点
1417582
De___Bruyne楼主2024/10/28 10:44
#include<bits/stdc++.h>

using namespace std;
const int N=1e3+10;
int T;
int n,m,kk;
int xx,yy,dd;
char mp[N][N];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
bool arr[N][N];
int ans;
void func(int x,int y,int d,int k){
	while(k>=0){
		if(!arr[x][y])ans++,arr[x][y]=1;
		int ct=0;
		while(ct<4&&k&&(x+dx[d]<1||x+dx[d]>n||y+dy[d]<1||y+dy[d]>m||mp[x+dx[d]][y+dy[d]]=='x'))
		{
			ct++,d=(d+1)%4,k--;
		}
		if(k&&x+dx[d]>=1&&x+dx[d]<=n&&y+dy[d]>=1&&y+dy[d]<=m&&mp[x+dx[d]][y+dy[d]]=='.')
		{
			x+=dx[d],y+=dy[d],k--;
		}
		else break;
	}
	if(!arr[x][y])ans++,arr[x][y]=1;
	return ;
}

int main(){
	ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
//	freopen("explore2.in","r",stdin);
//	freopen("explore.out","w",stdout);
	cin>>T;
	while(T--){
		ans=0;
		cin>>n>>m>>kk;
		cin>>xx>>yy>>dd;
		char t;
		memset(arr,0,sizeof arr);
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>t;
				mp[i][j]=t;
			}
		}
		func(xx,yy,dd,kk);
		cout<<ans;
		if(T)cout<<'\n';
		else cout<<endl;
	}
//	fclose(stdin);
//	fclose(stdout);
	return 0;
}
2024/10/28 10:44
加载中...