为什么我for从0开始就对,从1开始样例第一组错了
  • 板块UVA1330 City Game
  • 楼主Em0ty
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/18 16:51
  • 上次更新2024/10/18 19:46:19
查看原帖
为什么我for从0开始就对,从1开始样例第一组错了
1052499
Em0ty楼主2024/10/18 16:51
#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 1010;
int n,m,ans;
int mp[N][N];
int up[N][N];
int left[N][N];
int right[N][N];
int main(){
	int T;
	scanf("%d",&T);
	while(T--){
		ans=0;
		scanf("%d%d",&n,&m);
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				char s=getchar();
				while(s!='F'&&s!='R') s=getchar();
				mp[i][j]=s=='F'?0:1;
			}
		}
		for(int i=1;i<=n;i++){
			int lo=-1,ro=m;
			for(int j=1;j<=m;j++){
				if(mp[i][j]==1){
					up[i][j]=0;
					left[i][j]=0;
					lo = j;
				}
				else{
					up[i][j]=i==1?1:up[i-1][j]+1;
					left[i][j]=i==1?lo+1:max(left[i-1][j],lo+1);
				}
			}
			for(int j=m;j>=1;j--){
				if(mp[i][j]==1){
					right[i][j]=n;
					ro = j;
				}
				else{
					right[i][j]=i==1?ro-1:min(right[i-1][j],ro-1);
					ans=max(ans,up[i][j]*(right[i][j]-left[i][j]+1));
				}
			}
		}
		printf("%d\n",ans*3);
	}
	
	return 0;
}

2024/10/18 16:51
加载中...