玄学TLE
查看原帖
玄学TLE
1047636
_ScreamBrother_楼主2024/11/5 13:47
#include <bits/stdc++.h>
#define int long long 
const int dir[4][2] = { {0, 1}, {1, 0}, {0, -1}, {-1, 0} };
char mp[1010][1010] = {};
bool vis[1010][1010] = {};
// 多测清空!!!!!!!!!!!!!!!!
signed main() {
//	freopen("explore.in", "r", stdin), freopen("explore.out", "w", stdout);
	int T;
	scanf("%d", &T);
	while (T --) {
		memset(vis, false, sizeof vis), memset(mp, 0, sizeof mp);
		int N, M, K, sx, sy, d, ans = 0, x, y;
		scanf("%d%d%d%d%d%d", &N, &M, &K, &sx, &sy, &d);
		vis[sx][sy] = true, x = sx, y = sy;
		for (int i = 1; i <= N; i ++) scanf("%s", mp[i] + 1);
		while (K --) {
			int nx = x + dir[d][0], ny = y + dir[d][1];
			if (nx >= 1 && ny >= 1 && nx <= N && ny <= M && mp[nx][ny] == '.')
				vis[nx][ny] = true, x = nx, y = ny;
			else d = (d + 1) % 4;
		}
		for (int i = 1; i <= N; i ++)
			for (int j = 1; j <= M; j ++) ans += vis[i][j];
		printf("%d\n", ans);
	}
	return 0;
}
2024/11/5 13:47
加载中...