loj#2334 「JOI 2017 Final」JOIOI 王国

分析

二分答案

判断左上角是否满足

为了覆盖所有范围

我们依次把右下角,左上角,右上角移动到左上角

代码

复制代码
#include<bits/stdc++.h>
using namespace std;
int a[2010][2010],n,m,Ans=1e9+7,mx,mn=1e9+7;
inline bool ck(int x){
    int i,j,k,l=mn+x,r=mx-x,lim=m;
    for(i=1;i<=n;i++){
      for(j=1;j<=lim;j++)
        if(a[i][j]<r)break;
      lim=min(lim,j-1);
      for(j=lim+1;j<=m;j++)
        if(a[i][j]>l)return 0;
    }
    return 1;
}
inline void work(){
    if(ck(0)){
      puts("0");
      exit(0);
    }
    int le=0,ri=mx-mn;
    while(ri-le>1){
      int mid=(le+ri)>>1;
      if(ck(mid))ri=mid;
        else le=mid;
    }
    Ans=min(Ans,ri);
    return;
}
int main(){
    int i,j,k;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
      for(j=1;j<=m;j++)
        scanf("%d",&a[i][j]),mn=min(mn,a[i][j]),mx=max(mx,a[i][j]);
    work();
    for(i=1;i<=n/2;i++)swap(a[i],a[n-i+1]);
    work();
    for(i=1;i<=n;i++)reverse(a[i]+1,a[i]+m+1);
    work();
    for(i=1;i<=n/2;i++)swap(a[i],a[n-i+1]);
    work();
    cout<<Ans;
    return 0;
}
复制代码

 

posted @   水题收割者  阅读(303)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!
点击右上角即可分享
微信分享提示