RE on test #8(玄关)
查看原帖
RE on test #8(玄关)
1218651
__harry_potter__楼主2024/8/23 16:31
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,i,j,r,cc,x,y,bl[2003][2003],br[2003][2003],b[2003][2003],ans;
char c[2003][2003];
int cj(int x,int y) {
	if(x<1||y<1) return 0;
	if(x>n||y>m) return 0;
	return 1;
}
int dbd(int x,int y) {
	if(cj(x,y)&&c[x][y]=='.') return 1;
	return 0;
}
void dfs(int x,int y,int l,int r) {
	if(dbd(x,y)&&(bl[x][y]<l||br[x][y]<r)) {
//		cout<<x<<" "<<y<<" "<<l<<" "<<r<<"\n";
		bl[x][y]=max(bl[x][y],l);
		br[x][y]=max(br[x][y],r);
		b[x][y]=1;
		dfs(x+1,y,l,r);
		if(l) dfs(x,y-1,l-1,r);
		dfs(x-1,y,l,r);
		if(r) dfs(x,y+1,l,r-1);
	}
	return ;
}
signed main() {
	scanf("%lld%lld%lld%lld%lld%lld%lld",&n,&m,&r,&cc,&x,&y);
	for(i=1; i<=n; i++) {
		for(j=1; j<=m; j++) {
			cin>>c[i][j];
			bl[i][j]=br[i][j]=-1;
		}
	}
	dfs(r,cc,x,y);
	for(i=1; i<=n; i++) {
		for(j=1; j<=m; j++) {
			ans+=b[i][j];
		}
	}
	printf("%lld",ans);
}
2024/8/23 16:31
加载中...