loj#2334 「JOI 2017 Final」JOIOI 王国
分析
二分答案
判断左上角是否满足
为了覆盖所有范围
我们依次把右下角,左上角,右上角移动到左上角
代码
#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 ;
}
loj#2334 「JOI 2017 Final」JOIOI 王国的更多相关文章
- 「JOI 2017 Final」JOIOI 王国
「JOI 2017 Final」JOIOI 王国 题目描述 题目译自 JOI 2017 Final T3「 JOIOI 王国 / The Kingdom of JOIOI」 JOIOI 王国是一个 H ...
- LOJ#2764. 「JOI 2013 Final」JOIOI 塔
题目地址 https://loj.ac/problem/2764 题解 真的想不到二分...不看tag的话... 考虑二分答案转化为判定问题,那么问题就变成了能不能组合出x个JOI/IOI,考虑贪心判 ...
- loj 2336「JOI 2017 Final」绳
loj 首先,所有位置最多被染色一次,因为要染多次的话,还不如一开始就染成最终的颜色.并且你可以一开始就染好色 因为最终长度为2,那么如果染完后这个序列可以被折完,那么首先最多只有两种颜色,还有就是要 ...
- loj#2333 「JOI 2017 Final」准高速电车
分析 我们发现到达一个点一定是先快车再准快车再慢车 于是快车将1-n分为多个区间 每次取出每个区间当前能到达的点的数量 选剩余时间贡献最大的的一个取得贡献并且再能到达的最远点建立准快车 代码 #inc ...
- loj#2332 「JOI 2017 Final」焚风现象
分析 我们发现改变一个区间实际上只有两个端点的贡献变换 代码 #include<bits/stdc++.h> using namespace std; #define int long l ...
- LOJ#2351. 「JOI 2018 Final」毒蛇越狱
LOJ#2351. 「JOI 2018 Final」毒蛇越狱 https://loj.ac/problem/2351 分析: 首先有\(2^{|?|}\)的暴力非常好做. 观察到\(min(|1|,| ...
- LOJ#2343. 「JOI 2016 Final」集邮比赛 2
题目地址 https://loj.ac/problem/2343 题解 首先处理出\(f[i]\)表示以当前位置开头(J,O,I)的合法方案数.这个显然可以\(O(n)\)处理出来.然后考虑在每个位置 ...
- loj 3014「JOI 2019 Final」独特的城市
loj 我本来是直接口胡了一个意思一样的做法的,但是因为觉得有点假+实现要用并查集(?)就卡了好一会儿... 对于一个点\(x\)来说,独特的点一定在它的最长链上,如果有独特的点不在最长链上,那么最长 ...
- loj 2759「JOI 2014 Final」飞天鼠
loj 这题有在一棵树上上升或者下降的操作,稍加分析后可以发现上升操作如果不是一定要做(指高度不足以到下一棵树或者是最后到达\(n\))就不做,下降操作也是如果不是一定要做(指到达下一棵树时高度过高) ...
随机推荐
- Mac入门--Apache/Php/Mysql的开启关闭
注意:mac自带apache环境和PHP环境 一 php服务的启动和关闭 php-fpm 启动 sudo php-fpm php-fpm 关闭 1 查看php-fpm端口是否在被php-fpm进程 n ...
- [AGC035F]Two Histograms
Description 你有一个 \(N\) 行.\(M\) 列的.每个格子都填写着 0 的表格.你进行了下面的操作: 对于每一行 \(i\) ,选定自然数 \(r_i\ (0 ≤ r i ≤ M ) ...
- 【推荐系统】知乎live入门4.排序
参考链接 [推荐系统]知乎live入门 目录 1. 概述 2. 排序模型建模 3. 排序总结 ===================================================== ...
- JavaScript数组增删方法总结
数组是JavaScript中常见的一个对象,在这篇文章中主要整理数组增删改查方面的相关操作方法. 首先我们创建一个数组 添加元素: push(elment) 从后面添加元素,返回数组的长度 uns ...
- MTCNN 人脸检测
demo.py import cv2 from detection.mtcnn import MTCNN # 检测图片中的人脸 def test_image(imgpath): mtcnn = MTC ...
- Node.JS-经典教程
目录 1. 下载地址 2. 目录 1. 下载地址 https://www.cnblogs.com/coco56/p/11223189.html 在视频教程那里 2. 目录 00课件.rar 01.历史 ...
- [译]深度学习(Yann LeCun)
深度学习 严恩·乐库 约书亚•本吉奥 杰弗里·希尔顿 摘要深度学习是计算模型,是由多个处理层学习多层次抽象表示的数据.这些方法极大地提高了语音识别.视觉识别.物体识别.目标检测和许多其他领域如药物 ...
- python中常用的时间操作
python中常用的时间模块有time和datetime,以下是这两个模块中常用的方法: #先引入模块 import timefrom datetime import datetiem, timezo ...
- python-条件判断
条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现: age = 20 if age >= ...
- CentOS 6.3下Zabbix监控MySQL数据库参数
系统环境:CentOS 6.3 x64 http://www.linuxidc.com/Linux/2012-12/76583.htm mysql: mysql-5.6.10 http://w ...