社区讨论

赛场70 pts 问题在哪 ?

P11228[CSP-J 2024] 地图探险参与者 2已保存回复 2

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@m2pva5k6
此快照首次捕获于
2024/10/26 15:56
去年
此快照最后确认于
2024/10/26 16:10
去年
查看原帖
CPP
#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;
}

回复

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

正在加载回复...