社区讨论

求助 RE on 92

CF525D Arthur and Walls参与者 3已保存回复 5

讨论操作

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

当前回复
5 条
当前快照
1 份
快照标识符
@loc84n6z
此快照首次捕获于
2023/10/30 09:31
2 年前
此快照最后确认于
2023/11/04 21:09
2 年前
查看原帖
看了之前的讨论区,说开 ll 会递归爆空间,然后我就全开了 int,结果还是 RE on 92 /yun
但感觉这份代码已经没啥可卡的地方了啊 /yun
CPP
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define up(i,x,y) for(int i=x,i##end=y;i<=i##end;++i)
#define down(i,x,y) for(int i=x,i##end=y;i>=i##end;--i)
using namespace std;
int n, m, k;
int read()
{
    int s = 0, f = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9')
    {
        if (ch == '-')
            f = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9')
    {
        s = s * 10 + ch - '0';
        ch = getchar();
    }
    return s * f;
}
char c[2002][2002];
int dx[8]={0,1,1,1,0,-1,-1,-1},dy[8]={1,1,0,-1,-1,-1,0,1};
void dfs(int x,int y)
{
	if(x<1||x>n||y<1||y>m||c[x][y]!='*')return;
	if((c[x-1][y]=='.'&&c[x][y-1]=='.'&&c[x-1][y-1]=='.')
	||(c[x+1][y]=='.'&&c[x][y+1]=='.'&&c[x+1][y+1]=='.')
	||(c[x-1][y]=='.'&&c[x][y+1]=='.'&&c[x-1][y+1]=='.')
	||(c[x+1][y]=='.'&&c[x][y-1]=='.'&&c[x+1][y-1]=='.'))
	{
		c[x][y]='.';
		up(i,0,7)dfs(x+dx[i],y+dy[i]);
	}
	else return;
}
signed main()
{
	n=read(),m=read();
	up(i,1,n)cin>>(c[i]+1);
	up(i,1,n)
	{
		up(j,1,m)if(c[i][j]=='*')dfs(i,j);
	}
	up(i,1,n)
	{
		cout<<(c[i]+1)<<'\n';
	}//
}


回复

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

正在加载回复...