1 solutions

  • 1
    @ 2025-4-26 15:14:34
    #include <bits/stdc++.h>
    using namespace std;
    bool vis[1005][1005];
    char ch[1005][1005];
    int dx[] = {0,1,0,-1},dy[] = {1,0,-1,0};
    int main() {
    	int t;
    	scanf("%d",&t);
    	while (t--) {
    		int n,m,k,x0,y0,d0;
    		memset(vis,0,sizeof(vis));
    		scanf("%d%d%d%d%d%d",&n,&m,&k,&x0,&y0,&d0);
    		for(int i = 1;i<=n;i++){
    			char s[1005];
    			cin>>s;
    			for(int j = 1;j<=m;j++)ch[i][j] = s[j-1];
    		}
    		vis[x0][y0] = true;
    		for (int i = 1;i<=k;i++) {
    			int x1 = x0+dx[d0],y1 = y0+dy[d0];
    			if (1<=x1 && x1<=n && 1<=y1 && y1<=m && ch[x1][y1] == '.') {
    				x0 = x1;
    				y0 = y1;
    			}
    			else d0 = (d0+1)%4;
    			vis[x0][y0] = true;
    		}
    		int ans = 0;
    		for (int i = 1;i<=n;i++) {
    			for (int j = 1;j<=m;j++)
    				ans+=vis[i][j];
    		}
    		printf("%d\n",ans);
    	}
    }
    ```
    `

    Information

    ID
    646
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    10
    Tags
    # Submissions
    9
    Accepted
    3
    Uploaded By