求助,卡在test7过不去了
查看原帖
求助,卡在test7过不去了
1509787
Marc206721楼主2025/2/7 12:51
#include<stdio.h>
int map[1100][1100];
int sum[1100][1100];
int n,m;
int min(int x,int y){
    return x>y?y:x;
}
int check(int mid){
for(int i=1;i<=n;i++){
    for(int j=1;j<=m;j++){
        sum[i][j]=(map[i][j]<mid?1:0);
    }
}
for(int i=1;i<=n;i++){
    for(int j=1;j<=m;j++){
        sum[i][j]+=sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1];
    }
}
for(int i=1;i+mid-1<=n;i++){
    for(int j=1;j+mid-1<=m;j++){
        if(sum[i+mid-1][j+mid-1]-sum[i-1][j+mid-1]-sum[i+mid-1][j-1]+sum[i-1][j-1]==0){
            return 1;
        }
    }
}
return 0;
}
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            scanf("%d",&map[i][j]);
        }
    }
    int max=0;
    int l=1,r=min(n,m);
    while(l<=r){
    int mid=(l+r)/2;
    
    if(check(mid))
    {
        l=mid+1;
        max=mid;
    }     
    else{
        r=mid-1;
    }

    }
    printf("%d\n",max);
    }
}
2025/2/7 12:51
加载中...