当前位置: 首页 > news >正文

P2216 [HAOI2007] 理想的正方形

题目描述

有一个 a×ba \times ba×b 的整数组成的矩阵,现请你从中找出一个 n×nn \times nn×n 的正方形区域,使得该区域所有数中的最大值和最小值的差最小。

输入格式

第一行为 333 个整数,分别表示 a,b,na,b,na,b,n 的值。

第二行至第 a+1a+1a+1 行每行为 bbb 个非负整数,表示矩阵中相应位置上的数。每行相邻两数之间用一空格分隔。

输出格式

仅一个整数,为 a×ba \times ba×b 矩阵中所有“ n×nn \times nn×n 正方形区域中的最大整数和最小整数的差值”的最小值。

输入输出样例 #1

输入 #1

5 4 2
1 2 5 6
0 17 16 0
16 17 2 1
2 10 2 1
1 2 2 2

输出 #1

1

说明/提示

矩阵中的所有数都不超过 1,000,000,0001,000,000,0001,000,000,000

20%20\%20% 的数据 2≤a,b≤100,n≤a,n≤b,n≤102 \le a,b \le 100,n \le a,n \le b,n \le 102a,b100,na,nb,n10

100%100\%100% 的数据 2≤a,b≤1000,n≤a,n≤b,n≤1002 \le a,b \le 1000,n \le a,n \le b,n \le 1002a,b1000,na,nb,n100

解析

只考虑最大值,最小值同理。

考虑 n2n^2n2 的正方形中,最大值其实就是这 nnn 列最大值中的最大值。

我们先用枚举方法,将每个数及其下方共计 nnn 个数最大值记为 Maxi,jMax_{i,j}Maxi,j,这可以在 O(abn)O(abn)O(abn) 的时间复杂度内做到。对于每一个行,只需要求连续 nnnMaxi,jMax_{i,j}Maxi,j 最大值即可,这暴力就好了。

此外,如果两个区间最大值都用单调队列亦可解决此题,但在这里小题大做了。

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a,b; 
int num[1005][1005],Max[1005][1005],Min[1005][1005];
int fr,end,que[1005],bh[1005];
int ans = 10000000001;
signed main() {scanf("%lld %lld %lld",&a,&b,&n);for(int i = 1;i <= a;i++) {for(int j = 1;j <= b;j++) scanf("%lld",&num[i][j]);}for(int i = 1;i <= a - n + 1;i++) {for(int j = 1;j <= b;j++) {Max[i][j] = -1,Min[i][j] = 10000000001;for(int k = 0;k < n;k++) {Max[i][j] = max(Max[i][j],num[i + k][j]);Min[i][j] = min(Min[i][j],num[i + k][j]);}}}for(int i = 1;i <= a - n + 1;i++) {for(int j = 1;j <= b - n + 1;j++) {int M_max = -1,M_min = 100000000001;for(int k = 0;k < n;k++) {M_max = max(M_max,Max[i][j + k]);M_min = min(M_min,Min[i][j + k]);}//printf("(%lld,%lld):%lld %lld\n",i,j,M_max,M_min);ans = min(ans,M_max - M_min);}}printf("%lld\n",ans);return 0;
}
http://www.dtcms.com/a/528931.html

相关文章:

  • 设计模式23种-C++实现
  • 涌现的架构:集体智能框架构建解析
  • 大模型技术的核心之“效率高”
  • 分类网站怎么做seo什么网站出项目找人做
  • Unity 3D笔记(进阶部分)——《B站阿发你好》
  • 怎样建设好网站如何评判一个网站建设的怎么样
  • 【017】旅游网
  • 两款实用电脑工具:屏幕监控与文件整理,提升工作效率
  • 用php做的网站有写软文怎么接单子
  • temu跨境电商厦门seo俱乐部
  • unity实现2D人物从上面踩踏敌人,敌人减血的简易方法(类似马里奥的攻击手段)
  • Spring AI 1.0 核心功能脉络
  • 【清除 Mac DNS 缓存】Mac 电脑能访问外网却无法加载特定页面?你的 DNS 缓存“发霉”了!
  • 局域网手机/平板无数据线传输文件-通过网络传输LocalSend
  • 网站开发时ie11的兼容网站开发的prd 怎么写
  • 电分:无功、有功,功率因数
  • Spring Bean作用域全解析
  • 网页制作与网站建设wordpress插件库
  • 【参赛心得】HarmonyOS创新赛获奖秘籍:如何用Stage模型和声明式UI打造高分作品
  • 我的班级网站模板糖果屋网站建设策划书
  • 【开题答辩实录分享】以《幼儿园信息管理系统设计与开发》为例进行答辩实录分享
  • C++ STL简介:从原理到入门使用指南
  • 青州网站建设公司页游平台排行榜
  • 哪些网站可以做设计软件重庆知名商城网站建设公司
  • 做预算查价格的网站是哪个好深圳做网站哪里好
  • 权重初始化方法详解
  • 三门峡建设环境局网站点击立即进入正能量网站
  • 北京哪里有做网站的咨询网站 模板
  • 自制leetcode计算题
  • dz可以做视频网站吗网站重新解析