loj#2334 「JOI 2017 Final」JOIOI 王国
2024-09-05 21:49:31
分析
二分答案
判断左上角是否满足
为了覆盖所有范围
我们依次把右下角,左上角,右上角移动到左上角
代码
#include<bits/stdc++.h>
using namespace std;
int a[][],n,m,Ans=1e9+,mx,mn=1e9+;
inline bool ck(int x){
int i,j,k,l=mn+x,r=mx-x,lim=m;
for(i=;i<=n;i++){
for(j=;j<=lim;j++)
if(a[i][j]<r)break;
lim=min(lim,j-);
for(j=lim+;j<=m;j++)
if(a[i][j]>l)return ;
}
return ;
}
inline void work(){
if(ck()){
puts("");
exit();
}
int le=,ri=mx-mn;
while(ri-le>){
int mid=(le+ri)>>;
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=;i<=n;i++)
for(j=;j<=m;j++)
scanf("%d",&a[i][j]),mn=min(mn,a[i][j]),mx=max(mx,a[i][j]);
work();
for(i=;i<=n/;i++)swap(a[i],a[n-i+]);
work();
for(i=;i<=n;i++)reverse(a[i]+,a[i]+m+);
work();
for(i=;i<=n/;i++)swap(a[i],a[n-i+]);
work();
cout<<Ans;
return ;
}
最新文章
- 线程Thread的基础知识学习
- select 支持宽高(高度有兼容问题);
- Android OpenCV 图像识别
- .NET破解之百度网盘批量转存工具
- 第十二届浙江省大学生程序设计大赛-May Day Holiday 分类: 比赛 2015-06-26 14:33 10人阅读 评论(0) 收藏
- ABBYY FineReader的图像编辑器功能使用方法
- 关于jsp利用EL和struts2标签来遍历ValueStack的东东 ------>; List<;Map<;K,V>;>; 以及 Map<;K,<;List<;xxx>;>;>; 的结构遍历
- sdut 2934 人活着系列之平方数 (完全背包变形)
- Android XML解析器的问题
- Comparing the contribution of NBA draft picks(转)
- tomcat启动非常慢;连接oracle数据库失败,jdbc错误日志提示connection reset;测试主机间网络互通及数据库端口都正常
- PHP正则验证类
- (转)Go中的string和[]byte对比
- 配置_DruidDataSource参考配置
- 死磕nginx系列--配置文档解读
- php中的后期静态绑定
- 通过yiic来创建yii应用
- css3阴影效果
- [Erlang27]如何监控指定目录下的*.beam文件,如果有改动就更新到指定的节点?
- delphi之读写文件的三种方式