bzoj 1047 [HAOI2007]理想的正方形 单调队列

Calpuff模型实战:从气象数据预处理到污染物扩散模拟全流程指南 本文提供了一份详尽的Calpuff模型实战指南,涵盖从气象数据预处理、地形处理到污染物扩散模拟与结果可视化的全流程。重点解析了Calmet气象场构建、Calpuff核心参数配置,并与AERMOD模型进行对比,帮助环境工程师与科研人员掌握这一强大的三维非稳态拉格朗日扩散模型,以应对复杂地形、海岸熏烟等实际模拟挑战。 阅读详情

                                               bzoj  1047



Description

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

Input

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

Output

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

Sample Input

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

Sample Output

1

HINT

问题规模

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

(2)20%的数据2<=a,b<=100,n<=a,n<=b,n<=10

(3)100%的数据2<=a,b<=1000,n<=a,n<=b,n<=100


用单调队列求出mapp[i][j]第i行第j列同行前n个中的最小值和最大值,接着用相同的思想对同列处理(其实相当于把mapp[i][j](j>=n)更新为mapp[i][j-n]到mapp[i][j]的最值)
对列处理的时候一定要注意i,j均>=n !!!!!


#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
#define M 1010
#define t1 qmin[tail1]
#define t2 qmax[tail2]
#define h1 qmin[head1]
#define h2 qmax[head2]
#define FOR(a,b) for(int a=1;a<=b;a++)


using namespace std;

struct Num{
    int x,y;
}qmin[M],qmax[M],minn,maxn;

int mapp[M][M],head1,head2,tail1,tail2,lmin[M][M],lmax[M][M],a,b,n,ans;

void ins(int x,int y)
{
    while(head1<=tail1&&mapp[t1.x][t1.y]>mapp[x][y])
    tail1--;
    tail1++;
    t1.x=x,t1.y=y;
    while(head2<=tail2&&mapp[t2.x][t2.y]<mapp[x][y])
    tail2--;
    tail2++;
    t2.x=x,t2.y=y;
}
void get(int x,int y)
{
    while(head1<=tail1&&y-h1.y>=n)
      head1++;
      minn=h1;
    while(head2<=tail2&&y-h2.y>=n)
      head2++;
      maxn=h2;
}
void ins1(int x,int y)
{
    while(head1<=tail1&&lmin[t1.x][t1.y]>lmin[x][y])
    tail1--;
    tail1++;
    t1.x=x,t1.y=y;
    while(head2<=tail2&&lmax[t2.x][t2.y]<lmax[x][y])
    tail2--;
    tail2++;
    t2.x=x,t2.y=y;
}
void get1(int x,int y)
{
    while(head1<=tail1&&x-h1.x>=n)
    head1++;
    minn=h1;
    while(head2<=tail2&&x-h2.x>=n)
    head2++;
    maxn=h2;
}


int main()
{
    scanf("%d%d%d",&a,&b,&n);
    FOR(i,a)
     FOR(j,b)
     {
         scanf("%d",&mapp[i][j]);
     }
    FOR(i,a)
    {
        head1=head2=1,tail1=tail2=0;
        FOR(j,b)
        {
            ins(i,j);get(i,j);
            lmin[i][j]=mapp[minn.x][minn.y];
            lmax[i][j]=mapp[maxn.x][maxn.y];
        }
    }
    ans=1000000000;
    for(int j=1;j<=b;j++)
    {
        head1=head2=1,tail1=tail2=0;
        for(int i=1;i<=a;i++)
        {
            ins1(i,j);
            get1(i,j);
            if(i>=n&&j>=n)
            ans=min(ans,lmax[maxn.x][maxn.y]-lmin[minn.x][minn.y]);
        }
    }
    printf("%d\n",ans);
    return 0;
}




Visual Studio 2022 社区版安装指南:从下载到配置的完整流程 本文详细介绍了Visual Studio 2022社区版的完整安装与配置流程,包括系统要求检查、官方下载步骤、工作负载选择、安装位置配置等关键环节。作为微软推出的免费集成开发环境,VS2022社区版支持多种编程语言,适合个人开发者和小型团队使用。文章还提供了常见问题解决和性能优化技巧,帮助用户高效完成开发环境搭建。 阅读详情

相关推荐

用AI画电路板AI EDA初探Creating WiFi Radio with CELUS: A Step-by-Step Tutorial 使用CELU.IO创建WiFi收音机:分步教程

结论:整体还不太成熟,所选器件单元是欧美思维,器件选型成本和咱们华强北还是无法比。可以关注迭代,看客就当走马观花就行了;不过里面的单元模块还带有AI提问的这个比较好,值得国内EDA从业者学习。话不多说上正文:本教程目的是让我们深入了解如何使用CELUS设计平台构建WiFi收音机实战项目。本指南的重点是使用该平台来选择正确的解决方案,并整合一个项目,让您可以将音乐和节目从互联网直接传输到您自己构建的扬声器。

2301_81235726的博客 1万+

1091 理想的正方形(单调队列优化)

1. 问题描述: 有一个 a×b 的整数组成的矩阵,现请你从中找出一个 n×n 的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 输入格式 第一行为三个整数,分别表示 a,b,n 的值;第二行至第 a+1 行每行为 b 个非负整数,表示矩阵中相应位置上的数。 输出格式 输出仅一个整数,为 a×b 矩阵中所有“n×n 正方形区域中的最大整数和最小整数的差值”的最小值。 数据范围 2 ≤ a,b ≤ 1000, n ≤ a,n ≤ b,n ≤ 100, 矩阵中的所有数都不超过 10 ^

二哈 568

具身智能:从理论突破到场景落地的全解析

具身智能(Embodied Intelligence)是人工智能与机器人学深度融合的前沿领域,其核心在于通过物理实体与环境的动态交互实现智能行为。区别于传统 AI 的 “离身性”(如语音助手仅依赖数据输入),具身智能强调 “智能体通过身体感知世界并反作用于环境”,形成 “感知 - 决策 - 行动” 的闭环。例如,能自主避障的配送机器人、可精准抓取异形物体的机械臂,均通过传感器网络与环境实时互动,在试错中优化行为策略。

LeeKumaの技术Note 2680

[HAOI2007]理想的正方形(优先队列)

[HAOI2007]理想的正方形题目描述有一个a * b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小。输入输出格式输入格式: 第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行为b个非负整数,表示矩阵中相应位置上的数。每行相邻两数之间用一空格分隔。输出格式: 仅一个整数,为a*b矩阵中所有“n*n正方形区域中的最大整数和最小整数的

Stockholm_Sun的博客 545

化学科学催化反应产率预测之Transformer建模SMILES(Datawhale AI 夏令营)

循环神经网络:由于所有的前文信息都蕴含在一个隐向量中,随着序列长度的增加,早期的上下文信息会逐渐被遗忘。卷积神经网络:受限的上下文窗口在建模长文本时存在天然不足。需要多层卷积操作才能处理长文本。在本篇文章中,我们学习了Transformer的基本架构及其在化学反应产率预测中的应用。通过利用Transformer的Encoder部分对SMILES进行建模,我们能够更有效地捕捉序列数据的特征,从而提高模型的预测性能。

不想宅的冷同学 1095

DataWorks PyODPS第三方包全攻略:从打包到加载的完整流程

本文详细介绍了在DataWorks的PyODPS节点中使用第三方Python包的完整流程,包括环境限制、打包工具pyodps-pack的使用、资源上传与加载实战,以及特殊场景处理技巧。通过本文,开发者可以掌握在MaxCompute受限环境中灵活使用自定义依赖的方法,提升数据处理效率。

dd012的博客 989

AcWing 1091 理想的正方形

题目描述: 有一个a×b的整数组成的矩阵,现请你从中找出一个 n×n的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 输入格式 第一行为三个整数,分别表示a,b,n的值; 第二行至第a+1 行每行为b个非负整数,表示矩阵中相应位置上的数。 输出格式 输出仅一个整数,为a×b矩阵中所有“n×n正方形区域中的最大整数和最小整数的差值”的最小值。 数据范围 2...

昂昂累世士的博客 436

Jetson AGX Orin到手必看:DP线选错黑屏、SSD不识别?这篇避坑指南帮你一次搞定

本文详细介绍了Jetson AGX Orin开发套件的硬件避坑指南,涵盖开箱检查、DP线选择、SSD兼容性等关键问题。通过实测数据和实用技巧,帮助开发者避免黑屏、存储不识别等常见问题,提升开发效率。特别推荐符合VESA认证的DP 1.4a线缆和兼容性优秀的SSD型号,确保设备稳定运行。

weixin_33696822的博客 433

二维单调队列优化

有一个 a×b 的整数组成的矩阵,现请你从中找出一个 n×n 的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 输入格式 第一行为三个整数,分别表示 a,b,n 的值; 第二行至第 a+1 行每行为 b 个非负整数,表示矩阵中相应位置上的数。 输出格式 输出仅一个整数,为 a×b 矩阵中所有“n×n 正方形区域中的最大整数和最小整数的差值”的最小值。 数据范围 2≤a,b≤1000,2≤...

幽灵悠悠 330

LED单元板驱动(HUB75接口)

开始之前先吐槽一下,搜这个的资料。要么都是Arduino,要么单片机的收费。小小的一个LED单元板,凭什么? 用Arduino是你速度快还是我ST,树莓派不好用?收费更离谱,这点东西还藏私?给你个中指凸。把原理都写出来看你怎么收费。 一、接口定义及原理 如图,有两个RGB通道,共占用6个IO。剩下的ABCDE为地址通道,LAT为行数据锁存通道,CLK为数据时钟,OE为低电平使能LED显示。图片这里没有E,证明它是16扫的,有E就会把B上面的地改为E。这样就是5位,2的5次方32扫。1.

a3748622的博客 3万+

2024年下半年软考系统架构设计师案例分析题

摘要: 本文包含两个软件系统设计案例。案例一讨论了大语言模型智能系统的质量属性需求分析,识别了功能性、性能、可靠性等需求,并对比了ping/echo和心跳两种故障检测策略。案例二探讨了购物网站的缓存设计,包括Cache-Aside策略的数据读取/更新流程,以及解决缓存一致性的多种方案(消息队列、数据库插件、锁机制等)。此外还涉及Elasticsearch分词器的特点比较和RESTful架构实现前后端分离的原理。这些案例展示了软件架构设计中的质量属性权衡、缓存策略选择及系统解耦等关键技术考量。<|end

卿着飞翔 1047

[HAOI2007]理想的正方形

[HAOI2007]理想的正方形 题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 输入输出格式 输入格式: 第一行为3个整数,分别表示a,b,n的值 第二行至第a+1行每行为b个非负整数,表示矩阵中相应位置上的数。每行相邻两数之间用一空格分隔。 输出格式: 仅一个整数,为a*b矩阵中所有“n*n正方形区域中

Edwin VanCleef的博客 564

self‑improving‑agent 安装与配置指南(OpenClaw)

长期记忆错误反思用户偏好学习持续进化AI → 反思 → 学习 → 改进。

tiantiantbtb的博客 1340

BZOJ1047: [HAOI2007]理想的正方形 单调队列

1047: [HAOI2007]理想的正方形 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2684  Solved: 1450 [Submit][Status][Discuss] Description   有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值 的差最

Oakley 644

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[bzoj1047][HAOI2007]理想的正方形【单调队列】

【题目链接】   http://www.lydsy.com/JudgeOnline/problem.php?id=1047 【题解】   横着做一遍单调队列得出每个点往右nn个的最大/最小值。   接下来用之前的结果竖着做一遍单调队列得出每个n∗nn∗n矩形的最大/最小值。   复杂度O(n2)O(n2) /* -------------...

dizhengyue1902的博客 148

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【bzoj1047】【HAOI2007】【理想的正方形】【单调队列】

Description 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 Input 第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行为b个非负整数,表示矩阵中相应位置上的数。每行相邻两数之间用一空格分隔。 Output 仅一个整数,为a*b矩阵中所有“n*n正方形区域中的最大整数和最小整数

sunshinezff的专栏 473

【bzoj1047】【单调队列】【HAOI2007】理想的正方形

Description 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 Input 第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行为b个非负整数,表示矩阵中相应位置上的数。每行相邻两数之间用一空格分隔。 Output 仅一个整数,为a*b矩阵中所有“n*n正方形区域中的最大整数和最小整数

OIerHZ的博客 670

bzoj 1047[HAOI2007]理想的正方形 - 单调队列

1047: [HAOI2007]理想的正方形 Time Limit:10 SecMemory Limit:162 MB Description   有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 Input   第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行为b个非...

130

BZOJ1047 [HAOI2007]理想的正方形(二维单调队列)

Description   有一个ab的整数组成的矩阵,现请你从中找出一个nn的正方形区域,使得该区域所有数中的最大值和最小值 的差最小。 Input   第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行为b个非负整数,表示矩阵中相应位置上的数。每 行相邻两数之间用一空格分隔。 100%的数据 2<=a,b<=1000,n<=a,n<=b,n<=1000...

chr1stopher 306

bzoj1047 [HAOI2007]理想的正方形——二维单调队列

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1047 就是先对行做一遍单调队列,再对那个结果按列做一遍单调队列即可。 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace std;...

aodan5477的博客 164

BZOJ 1047 [HAOI2007]理想的正方形【单调队列

显然就是扫一下所有n*n的矩阵的最大值和最小值只差取min,单调队列横着扫一遍竖着扫一遍就好了 好好取名字,少用ctrl+C ctrl+V【因为这个我调了一年233333 #include #define MAXN 1006 using namespace std; int n,m,k; inline int read(){ register char ch = getchar();

Flaze_的博客 436

【二维单调队列】BZOJ1047-[HAOI2007]理想的正方形

【题目大意】 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 【思路】 裸的二维单调队列。二维单调队列的思路其实很简单: (1)对于每一行维护两个宽度为n的滑动窗口记录单行中的min和max,和POJ2823一个道理。此时相当于把n个格子浓缩到了一个格子当中。 (2)维护n*n大小的二维滑动窗口中...

dianchunhui2654的博客 165

【BZOJ】【P1047】【HAOI2007】【理想的正方形】【题解】【单调队列】

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1047 先用单调 预处理出

退役狗的专栏 706

[BZOJ1047][HAOI2007]理想的正方形(单调队列)

题目描述传送门题解由题目可知只有每一部分的最大值和最小值是有价值的。 单调队列只能处理一维的情况,二维的不好处理。那么我们可以考虑一维一维处理,比如说,先做列再做行。 可以将每一列每一个长度为n的区间用单调队列处理出来最大值和最小值,然后缩成一个点。 然后将每一行缩成的那些点每一个长度为n的区间再用单调队列处理出来最大值和最小值,这样就相当于求出了n*n的矩形的最大值和最小值统计答案即可。代码

zyf2000 916

bzoj 1047: [HAOI2007]理想的正方形 (单调队列)

1047: [HAOI2007]理想的正方形 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2843  Solved: 1551 [Submit][Status][Discuss] Description   有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值 的差最小。

clover_hxy的博客 565

BZOJ 1047: [HAOI2007]理想的正方形 单调队列瞎搞

题意很简明吧? 枚举的矩形下边界和右端点即右下角,来确定矩形位置; 每一个纵列开一个单调队列,记录从 i-n+1 行到 i 行每列的最大值和最小值,矩形下边界向下推移的时候维护一下; 然后在记录的每一列的最大值和最小值上,跑滑动窗口,即用单调队列维护区间 [ j-n+1 , j ] 的最大值和最小值; 相当于维护了一个矩形的最大值和最小值 #include<cstdi...

147

bzoj1047: [HAOI2007]理想的正方形(单调队列)

原题链接 题目描述:有一个ab的整数组成的矩阵,现请你从中找出一个nn的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 输入格式:第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行为b个非负整数,表示矩阵中相应位置上的数。每行相邻两数之间用一空格分隔。 100%的数据2<=a,b<=1000,n<=a,n<=b,n<=1000 输出格式...

diqiao4431的博客 124
上一篇: bzoj 3240 [Noi2013]矩阵游戏
下一篇: bzoj 1034 n [ZJOI2008]泡泡堂BNB 贪心 田忌赛马
DJS_K_D
博客等级 码龄12年 2粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值