Description
我们将矩阵A中位于第i行第j列的元素记作A[i,j]。一个矩阵A是酷的仅当它满足下面的条件:
A[1,1]+A[r,s]<=A[1,s]+A[r,1] (r,s>1)
其中r为矩阵A的行数,s为矩阵A的列数。
进一步,如果一个矩阵是非常酷的仅当它的每一个至少包含两行两列子矩阵都是酷的。
你的任务是,求出一个矩阵A中的一个非常酷的子矩阵B,使得B包含最多元素。

Input
第一行包含两个整数R,S(2<=R,S<=1000),代表矩阵的行数与列数。
接下来R行每行包括S个整数,代表矩阵中的元素,矩阵中元素的绝对值不大于1000000。

Output
一行一个整数,代表子矩阵B的元素总数。如果没有一个非常酷的子矩阵,输出0。

Sample Input
输入1:
3 3
1 4 10
5 2 6
11 1 3
输入2:
3 3
1 3 1
2 1 2
1 1 1
输入3:
5 6
1 1 4 0 3 3
4 4 9 7 11 13
-3 -1 4 2 8 11
1 5 9 5 9 10
4 8 10 5 8 8

Sample Output
输出1:
9
输出2:
4
输出3:
15
【样例3解释】
在第三个样例中,子矩阵B的左上角为A[3,2],右下角为A[5,6]。

Data Constraint
对于60%的数据,满足R,S<=350。
对于100%的数据,满足2<=R,S<=1000,矩阵中元素的绝对值不大于1000000。
.
.
.
.
.

分析

一个矩阵为酷当且仅当它的每一个2*2的矩阵都是酷的
那么可以考虑求出每一个2*2的矩阵是否酷,把酷的矩阵染为颜色1,不酷的矩阵不染色
那么现在问题就转换为求一个含有最大面积的矩形(含1)
用单调栈做
.
.
.
.
.

程序:
#include<iostream>
using namespace std;
int b[1001][1001],a[1001][1001],c[1001],r,s,ans;
int main()
{cin>>r>>s;for (int i=1;i<=r;i++)for (int j=1;j<=s;j++){cin>>a[i][j];b[i][j]=1;}for (int j=2;j<=s;j++){for (int i=2;i<=r;i++)if (a[i-1][j-1]-a[i-1][j]<=a[i][j-1]-a[i][j]) b[i][j]=b[i-1][j]+1;}for (int i=1;i<=r;i++)for (int j=1;j<=s;j++)if (b[i][j]==1) b[i][j]=0;ans=0;c[0]=1;for (int i=2;i<=r;i++){int h=0;for (int j=2;j<=s;j++){while (h!=0&&b[i][j]<=b[i][c[h]]){int w=b[i][c[h]]*(j-c[h-1]);ans=max(ans,w);h--;}c[++h]=j;}while (h!=0){int w=b[i][c[h]]*(s+1-c[h-1]);ans=max(ans,w);h--;}}cout<<ans;
}

转载于:https://www.cnblogs.com/YYC-0304/p/9499930.html

【NOIP2015模拟10.22】最大子矩阵相关推荐

  1. 【NOIP2015模拟10.22】矩形

    Description 给定一个由数字(0-9)构成的字符串s.我们可以由此定义出size(s) * size(s) 大 小的矩阵b,其中b[i][j] = s[i] * s[j]:请问在这个矩阵b中 ...

  2. 【NOIP2015模拟10.22】最小代价

    Description 给出一幅由n个点m条边构成的无向带权图. 其中有些点是黑点,其他点是白点. 现在每个白点都要与他距离最近的黑点通过最短路连接(如果有很多个黑点,可以选取其中任意一个),我们想要 ...

  3. JZOJ 3885. 【长郡NOIP2014模拟10.22】搞笑的代码

    Description 在OI界存在着一位传奇选手--QQ,他总是以风格迥异的搞笑代码受世人围观 某次某道题目的输入是一个排列,他使用了以下伪代码来生成数据 while 序列长度< n do { ...

  4. JZOJ 3886. 【长郡NOIP2014模拟10.22】道路维护

    Description 最近徆多人投诉说C国的道路破损程度太大,以至亍无法通行 C国的政府徆重视这件事,但是最近财政有点紧,丌可能将所有的道路都进行维护,所以他们决定按照下述方案进行维护 将C国抽象成 ...

  5. 【NOIP2015模拟10.27】魔道研究

    Description "我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力." --<The Grimoire of Mar ...

  6. 【NOIP2015模拟10.28B组】终章-剑之魂

    首次写这解析 题目介绍: [背景介绍] 古堡,暗鸦,斜阳,和深渊-- 等了三年,我独自一人,终于来到了这里-- "终焉的试炼吗?就在这里吗?"我自言自语道. "终焉的试炼 ...

  7. 4270. 【NOIP2015模拟10.27】魔道研究

    Description "我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力." --<The Grimoire of Mar ...

  8. jzoj4270. 【NOIP2015模拟10.27】魔道研究

    题目描述 Description "我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力." --<The Grimoire o ...

  9. [NOIP2015模拟10.27] [JZOJ4270] 魔道研究 解题报告(动态开点+权值线段树上二分)

    Description "我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力." --<The Grimoire of Mar ...

最新文章

  1. 数据结构与算法:二分查找
  2. CSS3属性box-sizing
  3. c++枚举类型(二) 命名空间
  4. C语言有三个电阻r1r2r3,[VR虚拟现实]ARM硬件试题库及答案(37页)-原创力文档
  5. 一个命名管道可以被多个客户端访问吗_Redis 的事务机制和管道技术Pipelining
  6. 【spring boot】ajax post提交遇到403
  7. BI项目中的ETL设计详解(数据抽取、清洗与转换)
  8. 2017蓝桥杯省赛---java---A---4(方格分割)
  9. 工作133:nexttick的使用
  10. Oracle 10g RAC 升级(CPU Update)之--升级CRS
  11. X光扫描揭示芯片密码卡入侵手段
  12. 跨境电商独立站,该如何去经营呢?
  13. fiq中断的入口地址_FIQ和IRQ区别
  14. 计算机网络图标显示不出来,网络图标不见了汇总解决教程
  15. 让人头大的Tablet PC
  16. matlab中appdesigner的控件简单讲解
  17. 投入和产出比例是衡量信息化成功的最主要标准
  18. python通过经纬度在地图标点_只要两步,用Python将地址标记在地图上!
  19. 小学六年级数学教案:圆柱与圆锥
  20. mysql报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zo

热门文章

  1. PyInstaller打包exe,打包出来的可执行程序在触屏版win10家庭版系统下报错Colud not find QtWebEngineProcess.exe
  2. Unet项目解析(6): 图像分块、整合 / 数据对齐、网络输出转成图像
  3. Access保留关键字
  4. 自已写的几个分页的存储过程
  5. javascript中setTimeout()函数
  6. VS2008 快捷键大全
  7. BugkuCTF-Misc:爆照(08067CTF)
  8. Java8--Lambda表达式对List集合操作
  9. c# bindingsource mysql,Navicat for MySQL 使用教程:在.NET中如何连接MySQL数据库
  10. Android 7.0 源码分析项目一期竣工啦