Description

求一个 n×mn \times mn×m 的网格图中,面积最大的矩形,满足平均值大于 kkk。

1≤n,m≤300,1≤ai≤2×1051 \leq n, m \leq 300, 1 \leq a_i \leq 2 \times 10^51≤n,m≤300,1≤ai​≤2×105

Solution

将输入的矩阵每个元素减去 kkk ,转换成矩阵之和为正。先预处理二维前缀和。

枚举左右边界的横坐标,并枚举下边界的纵坐标,对于每个 jjj,它对应的最大的上边界坐标为满足 sk<sjs_k < s_jsk​<sj​ 的最小的 kkk。可以发现单调性,所以在从小到大枚举 jjj 的同时维护一个递减单调队列,然后在单调队列找最小的 kkk 即可。

O(n3log⁡n)O(n^3 \log n)O(n3logn)

Code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 500 + 5;
int q[N], a[N][N];
ll s[N][N], c[N];
int n, m, k, head, ans, K;
int main() {scanf("%d%d%d", &n, &m, &K);for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++) {scanf("%d", &a[i][j]); a[i][j] -= K; s[i][j] = s[i][j - 1] + a[i][j];}for (int i = 1; i <= m; i++)for (int j = i; j <= m; j++) {head = q[0] = c[0] = 0;for (int k = 1; k <= n; k++) {c[k] = c[k - 1] + s[k][j] - s[k][i - 1];if (c[k] < c[q[head]]) q[++head] = k;}for (int k = n; k; k--) {while (head && c[k] >= c[q[head - 1]]) head--;ans = max(ans, (k - q[head]) * (j - i + 1));}}printf("%d\n", ans);return 0;
}

ZR859 坤坤的篮球场 (单调队列)相关推荐

  1. 单调队列多重背包时间复杂度O(vn)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 多重背包问题: 有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件.怎样装才能使背包内的物品总价值最大? 网 ...

  2. 洛谷 P2219修筑绿化带 二维单调队列~

    题目链接:https://www.luogu.org/problem/P2219 emmm调了一个上午+中午,fan 题意:从N*M的中找到一个a*b的大矩形和减去a*b中的一个与之不重边界的c*d的 ...

  3. P2216 理想的正方形 单调队列 (二维)

    题目链接:https://www.luogu.org/problem/P2216 题意:求给定n*m的矩形中所有k*k的正方形块中最大值最小值之差(极差)最小 哇,大神的思路真的很帅 单调队列对每一行 ...

  4. 点分治问题 ----------- luoguP2942 [WC2010]重建计划 [点分治 + bfs + 单调队列 + 预处理建树 + 二分 + 01分数规划]

    题目链接 解题思路: 1.对于这个Avgvalue=∑e∈sv(e)∣s∣Avgvalue = \frac{\sum_{e\in s}v(e)}{|s|}Avgvalue=∣s∣∑e∈s​v(e)​ ...

  5. 解题报告:Fake Maxpooling(单调队列求矩阵的和)

    我们不妨先把这个问题中二维的矩阵简化成一维的数列.那么现在的问题就变成了一个求连续的滑动窗口最值问题:给出一个长度为n的数列和一个长度为k(k<n)的窗口,记录滑动窗口位于每个位置下的下的最大值 ...

  6. 0x12.基本数据结构 — 队列与单调队列

    目录 一.队列 0.UVA540 团体队列 Team Queue 1.AcWing 133. 蚯蚓(模拟优先队列) 二 .单调队列 0.AcWing 135. 最大子序和(单调队列) 1.luogu ...

  7. 【题解】P1419 寻找段落(二分+单调队列)难度⭐⭐⭐★

    P1419 寻找段落 首先二分答案,即:二分最大平均值. 我们将a全部减去mid,问题转化为判断是否存在一个长度在s~t范围内的区间它的和为正,如果有说明还有更大的平均值. 用前缀和和单调队列维护. ...

  8. 【数据结构】单调栈和单调队列 详解+例题剖析

    算法:单调栈和单调队列 一.单调栈和单调队列 二.单调栈例题 1.模板题入门 2.不懂不要急,看这道题 三.单调队列例题 1.入门 2.进阶 一.单调栈和单调队列 单调栈和单调队列与普通的栈,队列不同 ...

  9. HDU 5289 Assignment(单调队列)

    题意:给T足数据,然后每组一个n和k,表示n个数,k表示最大同意的能力差,接下来n个数表示n个人的能力,求能力差在k之内的区间有几个 分析:维护一个区间的最大值和最小值,使得他们的差小于k,于是採用单 ...

最新文章

  1. Linux下__attribute__((visibility (default)))的使用
  2. IDBA-UD:组装非均匀覆盖度的宏基因组和单细胞数据
  3. nutch2.1+mysql报错及解决
  4. linux stop函数,perfmonctl()函数 Unix/Linux
  5. MySQL的索引优化
  6. iBase4J简单应用添加模块
  7. 项目质量管理—七种基本质量工具
  8. 18-HTML标签的居中
  9. web服务器的作用有哪些,web服务器的作用
  10. [转]Apache Ignite——新一代数据库缓存系统
  11. oracle to_char 进制转换_〖Oracle 转载〗Oracle的数据类型转换 to_char
  12. 阿里天池金融数据分析赛题2:保险反欺诈预测baseline
  13. python基础笔试面试题_python基础面试常见题
  14. 解决建立时间与保持时间不满足的问题
  15. 求求你!别再考秒杀系统了!看完这篇怼回去 ~
  16. CTPN-自然文本场景检测学习笔记
  17. java后台请求第三方接口,写入中文参数时失败“message“:“Invalid UTF-8 start byte 0x84\n at XXXXXXXXX
  18. 第二次学习计划 之 SVM算法
  19. 3COM SS3 4400系列交换机VLAN功能设置
  20. 一分钟入门Java面向对象 为什么要创建对象?

热门文章

  1. 深入理解 JVM 中的 returnAddress
  2. 2020年联通服务器维护,2020年12月17日停机维护公告
  3. 31省市数字化转型路线图公布
  4. 9.opencv-python;cv2库;形态学;MORPH_TOPHAT礼帽与MORPH_BLACKHAT黑帽
  5. 游戏运营分析项目(1)
  6. 电子病历结构化发展路线图谱
  7. 数学建模--模糊综合评价
  8. 如何使用 snap 包在 Linux 上安装 ONLYOFFICE 文档
  9. Linux Shell Shock漏洞利用和实战
  10. 4个经典案例:国外社交媒体是这样病毒性营销的