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

题意很简明吧?

枚举的矩形下边界和右端点即右下角,来确定矩形位置;

每一个纵列开一个单调队列,记录从 i-n+1 行到 i 行每列的最大值和最小值,矩形下边界向下推移的时候维护一下;

然后在记录的每一列的最大值和最小值上,跑滑动窗口,即用单调队列维护区间 [ j-n+1 , j ] 的最大值和最小值;

相当于维护了一个矩形的最大值和最小值

#include<cstdio>
#include<iostream>
#include<queue>
#define R register int
using namespace std;
inline int g() {R ret=0,fix=1; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-1:fix;do ret=ret*10+(ch^48); while(isdigit(ch=getchar())); return ret*fix;
}
inline int abs(int x) {return x>0?x:-x;}
int a,b,n,ans=0x3f3f3f3f;
int vl[1010][1010];
deque<int> q[1010],qq[1010],p,pp;
signed main() {a=g(),b=g(),n=g();for(R i=1;i<=a;++i) for(R j=1;j<=b;++j) vl[i][j]=g();for(R i=1;i<=a;++i) {for(R j=1;j<=b;++j) {while(q[j].size()&&vl[q[j].back()][j]<vl[i][j]) q[j].pop_back();while(q[j].size()&&q[j].front()+n<=i) q[j].pop_front();q[j].push_back(i);//cout<<i<<"hang"<<j<<"lie"<<vl[i][q[j].front()]<<" ";//cout<<"mx"<<vl[q[j].front()][j]<<" ";
        } for(R j=1;j<=b;++j) {while(qq[j].size()&&vl[qq[j].back()][j]>vl[i][j]) qq[j].pop_back();while(qq[j].size()&&qq[j].front()+n<=i) qq[j].pop_front();qq[j].push_back(i);//cout<<"mn"<<vl[qq[j].front()][j]<<" ";}//cout<<'\n';if(i<n) continue; p.clear();pp.clear();for(R j=1;j<=b;++j) {while(p.size()&&vl[q[p.back()].front()][p.back()]<vl[q[j].front()][j]) p.pop_back();while(p.size()&&p.front()+n<=j) p.pop_front();p.push_back(j);while(pp.size()&&vl[qq[pp.back()].front()][pp.back()]>vl[qq[j].front()][j]) pp.pop_back();while(pp.size()&&pp.front()+n<=j) pp.pop_front();pp.push_back(j);if(j<n) continue;ans=min(abs(vl[q[p.front()].front()][p.front()]-vl[qq[pp.front()].front()][pp.front()]),ans);}}printf("%d\n",ans);
}

2019.04.06

转载于:https://www.cnblogs.com/Jackpei/p/10662816.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享到Teams

在今年三月份末&#xff0c;Teams的官方文档推出了一个新功能&#xff1a;将网页&#xff08;一个URL&#xff09;分享到Teams里。 也就是说开发人员现在可以很方便的开发一个页面&#xff0c;页面里有一个Teams的图标&#xff0c;当访问此页面的最终用户点击这个图标后可以将…

xshell使用xftp传输文件和使用pure-ftpd搭建ftp服务

xshell使用xftp传输文件 首先安装xftp&#xff0c;然后建立会话&#xff0c;步骤和xshell一样&#xff0c;在使用的时候用CtrlALTf呼出&#xff0c;左边是windows桌面&#xff0c;右面是linux&#xff0c;双击或拖拽都可以实现命令互传。 使用pure-ftpd搭建ftp服务 首先安装yum…

MySQL命令行查询乱码解决方法

转自Agoly的博客&#xff0c;原文链接https://www.cnblogs.com/qmfsun/p/4846467.html 感谢博主Agoly这篇文章说的很详细很透彻。 MySQL会出现中文乱码的原因不外乎下列几点&#xff1a;1.server本身设定问题&#xff0c;例如还停留在latin1 2.table的语系设定问题(包含charact…

Teams Bot如何判断用户所在的时区

一说到时间&#xff0c;就会联想到时区&#xff0c;夏令时等头痛的问题&#xff0c;不同国家有不同国家的规定。如果你希望你的Teams Bot可以判断出当前用户所在的时区&#xff0c;从而可以针对性的进行一些处理时&#xff0c;你要做好心理准备&#xff0c;这个复杂程度远远超过…

『流畅的Python』第1~4章笔记_数据结构、编码

由于1~4章内容零散且基础&#xff0c;所以统计一下涉及到的内容&#xff0c;记录一下&#xff0c;方便查阅&#xff08;第一张图右键新页面打开即可看到清晰大图&#xff09;

docker 安装ELK

参考文档&#xff1a; Docker ELK使用文档&#xff1a;http://elk-docker.readthedocs.io/ 1.拉取镜像 查看 Docker Hub 的镜像 docker search elk 拉取镜像 sudo docker pull sebp/elk 2.启动容器 docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -p 4560:4560 -it --na…

在Teams Hackathon上介绍LuckyDraw

很荣幸有机会在今天的Teams Hackathon上介绍LuckyDraw这个teams app。 因为到场的都是各路开发高手&#xff0c;所以当时在准备这个ppt的时候特别增加了难度等级&#xff0c;哈哈。 从如何构建云原生的Teams app&#xff0c;到IaC&#xff0c;重点讲了如何开发一个面向全球用户…

Word 2010 制作文档结构之图标自动编号设置

注意&#xff1a; 使用图片自动编号时&#xff0c;如果文档标题使用的样式是通过“将所选内容保存为新快速样式”所生成的样式&#xff0c;则图片自动编号不会生效 因此设置标题样式时&#xff0c;不要 新建样式&#xff0c;直接使用word预设的“标题 1”样式和“标题 2”样式即…

ubuntu linux下建立stm32开发环境: 程序烧录 openocd+openjtag

原文出处&#xff1a; http://blog.csdn.net/embbnux/article/details/17619621 之前建立stm32开发环境,程序也已经编译好生成main.bin,接下来就是要把该文件烧录到stm32上.在linux下给arm烧录程序主要使用openocd,这个软件开源,而且支持众多芯片,从ARM9到A8都可以,当然STM32也…

在Teams中对网站的URL特殊解析

Teams中有一个不太被大家注意的扩展点&#xff0c;名字叫Link unfurling&#xff0c;就是对于一些特殊域名的URL进行特别的解释。 可能这么说&#xff0c;大家还是无法理解&#xff0c;我们看一下下面这个图&#xff0c;当用户在message输入框中输入了一窜url后&#xff0c;Te…

Wireshark 在Windows下的安装

1、wireshark官网地址&#xff1a;https&#xff1a;//www.wireshark.ort/ 下载抓包驱动&#xff1a;windows使用winpcap&#xff0c;Linux使用libcap2、安装下载好的wireshark程序包&#xff1a;3、安装winpcap插件&#xff1a;4、安装USBPcap插件&#xff1a;5、安装完成&…

Teams团队的成员列表API的已知问题

如果大家经常使用Graph API来对Teams进行操作管理的话&#xff0c;有时候会遇到一些奇怪的问题&#xff0c;我前两天还在Stack Overflow上回答了一个用户的问题&#xff0c;这个问题我自己也遇到过。所以我想用这篇文章来分享一下&#xff0c;万一以后大家遇到类似的问题&#…

OSChina 周三乱弹 —— 爸爸说,这个是从他硬盘里掉出来的

2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单&#xff08;2018&#xff09;请戳&#xff08;这里&#xff09; 【今日歌曲】 焕焕 &#xff1a;分享郑秀文的单曲《唉声叹气》 《唉声叹气》 手机党少年们想听歌&#xff0c;请使劲儿戳&#xff08;这里&am…

改进的二分查找

1 import java.util.Comparator;2 3 public class MyUtil {4 5 public static <T extends Comparable<T>> int binarySearch(T[] x, T key) {6 return binarySearch(x, 0, x.length- 1, key);7 }8 9 // 使用循环实现的二分查找 10 public static…

LuckyDraw app被评为Microsoft365 App Award

今天查了一下LuckyDraw app&#xff0c;突然发现我上半年开发的Teams app: LuckyDraw&#xff0c;竟然多了一个勋章图标&#xff0c;点进去一看是微软给我的app评了一个”Microsoft 365 App Award”。Super surprise!!&#x1f60d;&#x1f60d;&#x1f60d; 看来我必须要抓…

Python学习笔记__10.4章 进程VS线程

# 这是学习廖雪峰老师python教程的学习笔记1、概览我们介绍了多进程和多线程&#xff0c;这是实现多任务最常用的两种方式。现在&#xff0c;我们来讨论一下这两种方式的优缺点要实现多任务&#xff0c;通常我们会设计Master-Worker模式&#xff0c;Master负责分配任务&#xf…

Filebeat占用内存和CPU过高问题排查

经反馈&#xff0c;新部署的服务器上filebeat占用的cpu过高&#xff0c;且内存只增不减。 而据我了解filebeat非常轻量级&#xff0c;正常情况下占用的资源几乎都能忽略不计&#xff0c;所以怀疑是filebeat本身出了问题。 第一时间查看filebeat日志&#xff08;默认路径/var/lo…

Teams架构剖析(2019年版本)

在上个月刚刚结束的Ignite大会上&#xff0c;Teams产品的架构师Bill Bliss给大家奉上了最新的Teams的架构设计&#xff0c;之前2017年和2018年微软的技术大会上都Teams架构的分享&#xff0c;但是今年大神把Teams架构讲得很深入&#xff0c;覆盖面很广。我这里就挑一些&#xf…

pycharm工具下代码下面显示波浪线的去处方法

近期安装了python后&#xff0c;发现使用pycharm工具打开代码后发现代码下边会有波浪线的显示&#xff1b;但是该代码语句确实没有错误&#xff0c;通过查询发现了两种方法去掉该波纹的显示&#xff0c;下面就具体说明一下&#xff1a; 方法一&#xff1a; 打开pycharm在右下方…

js面向对象与PHP面向对象总结

js面向对象&#xff1a; 1.什么是对象&#xff1f; 对象&#xff1a;任何实体都是对象&#xff0c;拥有属性和方法两大特征 属性&#xff1a;描述事物的特点&#xff1b; 方法&#xff1a;实物拥有的行为&#xff1b; 2.在JS里 Person.name"zhang" Person.fnfunction…