赛场70 pts 问题在哪 ?
查看原帖
赛场70 pts 问题在哪 ?
1104287
zyc0614楼主2024/10/26 15:55

rt

#include<bits/stdc++.h>
#define ll long long
#define re register
using namespace std;
ll T;
inline ll read(){
	ll res=0ll,f=1;
	char c;
	for(;(c=getchar())<'0'||c>'9';c=='-'?f=-f:0);
	while(c>='0' && c<='9') res=(res<<1) + (res<<3) + c-'0',c=getchar();
	return res*f;
}
/*-----------------*/
int main(){
	//freopen("explore.in","r",stdin);
	//freopen("explore.out","w",stdout);
    T=read();
    while(T--)
    {
    	ll n=read(),m=read(),k=read(),x=read(),y=read(),d=read(),ans=0;
    	char a[1005][1005];bool f[1005][1005];
    	for(int re i=1;i<=n;i++)
    		for(int re j=1;j<=m;j++) cin>>a[i][j],f[i][j]=true;
    	f[x][y]=false;
    	while(k--)
    	{
    		if(d==0)
    		{
    			if(a[x][y]=='.'&&a[x][y+1]=='.') y+=1,f[x][y]=false;
    			else d=(d+1)%4;
			}
			else if(d==1)
    		{
    			if(a[x][y]=='.'&&a[x+1][y]=='.') x+=1,f[x][y]=false;
    			else d=(d+1)%4;
			}
			else if(d==2)
    		{
    			if(a[x][y]=='.'&&a[x][y-1]=='.') y-=1,f[x][y]=false;
    			else d=(d+1)%4;
			}
			else if(d==3)
    		{
    			if(a[x][y]=='.'&&a[x-1][y]=='.') x-=1,f[x][y]=false;
    			else d=(d+1)%4;
			}
		}
		for(int re i=1;i<=n;i++)
    		for(int re j=1;j<=m;j++) if(f[i][j]==false) ++ans;
    	cout<<ans<<"\n";
	}
	return 0;
}

2024/10/26 15:55
加载中...