最大矩阵

(matrix.pas/c/cpp)

【问题描述】
在看过萝卜同学的游戏后, Fbs 表示太无趣了。他想试试萝卜同学能不能玩点级别更高的游戏,于
是他想了个难度大点的。
首先他定义:一个矩阵的权值为这个矩阵四个角上的数值的最小值。现在 Fbs 给出一个 N*M 的矩阵,
以及矩阵上的数值, 他想让萝卜同学在这个矩阵中寻找到一个权值最大的子矩阵。萝卜同学看了一眼就
傻眼了,表示他不能玩这游戏,但是他很机灵,偷偷的向你求助, 所以请你告诉他这个最大权值。
【输入格式】
第一行两个数 N,M
接下来一个 N*M 的矩阵
【输出格式】
一个数表示最大权值
【样例输入】
3 3
1 0 1
0 1 0
0 1 1
【样例输出】
0
【样例解释】
可以发现无论选择哪个子矩阵四角都至少有一个 0。
【数据说明】
对于 10%的数据: 1<=N,M<=50
对于 30%的数据: 1<=N,M<=200
对于 100%的数据: 1<=N,M<=2000, 所有的数值不超过 10^9
【限制】
时间:1.5s 空间:256MB;

【题目分析】

考场上我只写出了O(n^3)的方法,每次枚举两列,然后一行一行的刷,二分我是有想过,就是不知道check怎么写,后来我看了题解,嗯……我果然是个JR(蒟蒻)。
首先这道题很容易想到二分枚举答案,然后进行check,开一个数组c,枚举行,先将这行中比答案大的全加入数组,然后接下来都O(n^2)两两枚举,定义布尔数组g[i][j],表示前面第i个元素和第j个元素是否在同一行大于答案,如果这次枚举发现g[i][j]为真,那么说明这一行和前面某一行都有i和j大于答案,那么这个矩阵四个角全大于矩阵,查找成功,退出,否则为了下次的枚举,g[i][j]赋值给1。
最后吐槽一下本地评测的时候所有考试评测AC的代码都TLE了,包括本JR的订正代码,后来在网上找到了一个神奇的读优,然后……就过了……

【复杂度】
时间:O(n^3*log(max_a[i])); (当然实际会比这小的多);
空间:O(n^2);

#include<cstdio>
#include<cstring>
using namespace std;
int n,m,ans,L,R,a[2005][2005],c[2005];
bool f[2005][2005];
inline char nc(){static char buf[100000],*p1=buf,*p2=buf;return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
inline void readi(int &sum){char ch=nc(); sum=0;while(!(ch>='0'&&ch<='9'))ch=nc();while(ch>='0'&&ch<='9')sum=sum*10+ch-48,ch=nc();
}
bool _check(int x){memset(f,0,sizeof(f));for (int i=1;i<=n;i++){int q=0;for (int j=1;j<=m;j++) if (a[i][j]>=x) c[++q]=j;for (int j=1;j<q;j++)for (int k=j+1;k<=q;k++)if (f[c[j]][c[k]]) return true; else f[c[j]][c[k]]=1;}return false;
}
int main()
{freopen("matrix.in","r",stdin);freopen("matrix.out","w",stdout);readi(n); readi(m); ans=0;for (int i=1;i<=n;i++)for (int j=1;j<=m;j++){readi(a[i][j]);if (L>a[i][j]) L=a[i][j];if (R<a[i][j]) R=a[i][j];}while (L<=R){int mid=((R-L)>>1)+L;if (_check(mid)){ans=mid; L=mid+1;}else R=mid-1;}printf("%d",ans);return 0;
}

PS:
关于读优:
读入优化新姿势——学习笔记 http://blog.csdn.net/chhnz/article/details/72672962
震惊!99.999%的OIER都不知道!我竟然学了假读优!竟然有这样的读优!
http://blog.csdn.net/FYOIER/article/details/72667544

在此对以上两位作者兼大牛ZH大佬和FY大佬表示崇敬和Orz
Orz ZH Orz FY

2017衢州联赛第三题题解相关推荐

  1. 2017衢州联赛第四题题解

    环游衢州 (walk.pas/c/cpp) [问题描述] Jason 想要带着他新叫的朋友环游 QZ, 于是他把 QZ 划分成了 n 个地方,已知这 n 个地方由 m 条双向边相连接,并且他把 n 个 ...

  2. 2017年大计基算法题 题解

    [NOJ 2010]数因子 签到题,考虑数据范围达到10910^9,即思考O(1)O(1)时间内的解法. 具体有 ans={2 (l≠r)l (l==r) ans=\left\{ \begin{arr ...

  3. 2017年衢州联赛 T2

    2017年衢州联赛 T2 题目 题解 单调栈或单调序列 + 二分查找优化 代码(Pascal) var n,tot,ans:longint;a,q:array[0..50005]of longint; ...

  4. NOIP信息奥赛--1995“同创杯”初中复赛题题解(三)

    NOI'95 "同创杯"全国青少年信息学(计算机)奥林匹克竞赛 分区联赛复赛测试数据(初中组) 第三题 输出结果为: A类=538 B类=462 本题解析:本题的关键是要计算二进制 ...

  5. 2019年CSP-J2第三题:纪念品(souvenir)题解

    题目来源 2019年CSP-J第二轮认证,第三题纪念品. 题目链接:http://47.110.135.197/problem.php?id=5078. 题面 小伟突然获得一种超能力,他知道未来 T ...

  6. 题解-百度2017春招笔试真题编程题集合

    题目链接:https://www.nowcoder.com/test/4998655/summary 一共五题,从第五题开始写,难度由难到易 ----------------------------- ...

  7. 腾讯2017暑期实习生编程题(三题)

    总的来说,作为暑期实习生的题目,三题都不难,仔细思考都能顺利做出来 PS:我喜欢漂亮点的代码风格O(∩_∩)O 对于A题,求个逆序,再求最长公共子序列就可以了,这里回头还可以复习一下最长公共子串怎么求 ...

  8. 2012NOIP普级组第三题--摆花(参考洛谷题解)

    一.题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过ai盆,摆 ...

  9. 人人网2017春季招聘编程题 - 题解

    人人网春招的这三道编程题,第一道水题,第二道注意点细节,第三道是一道数论题. 原题链接:点这儿. 第一题:波形图 题目: 小明正在做物理实验,他在示波器上观察波形.在每一时刻,他能观察到两种可能的波形 ...

最新文章

  1. C++ const 学习
  2. WPF实例秀——不用属性也Binding
  3. 如何保护你的 Python 代码—— 定制 Python 解释器
  4. wxWidgets:wxRadioButton类用法
  5. linux编译ffmpeg_[Cmake-Android音视频]ffmpeg3.4编译支持neon,硬解码
  6. 2020年第十八届西电程序设计竞赛网络预选赛之Problem D 由比滨结衣的饼干(二分+前缀后缀)
  7. python 加载mat文件
  8. 怎么用计算机画正弦函数图像,几何画板如何绘制正弦函数图象
  9. 预览文章: 猿们平常都喜欢听啥音乐?
  10. SSM框架的基本概念
  11. 【Sqoop】Sqoop job实现增量导入的原理
  12. 软件工程经济学结课报告——兰花智慧大棚监控系统可行性研究报告
  13. 数据科学和人工智能技术笔记 十九、数据整理(下)
  14. 人工智能革命:人类将永生或者灭绝
  15. html,实现心动的表白代码
  16. 推荐几个图标搜索网站
  17. 质量功能配置(QFD)矩阵
  18. 学生宿舍(寝室)管理系统设计与实现(JavaWeb 附 演示、源码下载地址)
  19. 夏季哪些蔬菜不适合生吃凉拌,食用会发生危险
  20. 简单网页制作的一些基础格式

热门文章

  1. 需求定律的4个准则——《可以量化的…
  2. java制作vpk系统_FWReinstaller3.60重刷系统VPK分享
  3. 如何在mac上输入无穷大infinity符号:∞
  4. verdi\debussy的使用技巧
  5. 回归评价指标:均方误差根(RMSE)和R平方(R2)
  6. ESXI 虚拟交换机配置 Trunk 端口组
  7. 若要运行此应用程序,您必须首先安装,NET Framework的以下版本之一(附链接)
  8. MVVM 和 VUE三要素:响应式、模板引擎、渲染
  9. 【转载】NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩、机器学习及最优化算法...
  10. 自制肥鲨HDO2电源降压延长线,支持3S~6S动力电池