【JZOJ4817】【NOIP2016提高A组五校联考4】square

题目描述

这里写图片描述

输入

这里写图片描述

输出

这里写图片描述

样例输入

3 4
1 1 0 1
0 1 1 0
0 1 1 0
5
1 1 2 3
2 1 3 2
3 2 3 4
1 1 3 4
1 2 3 4

样例输出

1
1
1
2
2

数据范围

这里写图片描述

解法

设f[i][j]为以(i,j)为右下角的正方形的最大边长。
f[i][j]=min(f[i1][j],f[i1][j1],f[i][j1])+1(a[i][j]=1)


考虑利用f来求答案。
对于询问(x1,y1,x2,y2):
显然ans=min(f[x][y],xx1+1,yy1+1)
二分答案mid,如果矩阵(x1+mid-1,y1+mid-1,x2,y2)的f最大值大于或等于mid,那么mid合法。


静态子矩阵求最大值,考虑使用二维RMQ。


总的时间复杂度为O(Tlog(n2))

代码

#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#define ll long long
#define ln(x,y) int(log(x)/log(y))
#define sqr(x) ((x)*(x))
using namespace std;
const char* fin="square.in";
const char* fout="square.out";
const int inf=0x7fffffff;
const int maxn=1007,maxk=10;
int n,m,t,i,j,k,l,lef,mid,rig;
int f[maxn][maxn],g[maxk][maxk][maxn][maxn];
int getmax(int sx,int sy,int tx,int ty){int i=0,j=0;while (sx+(1<<(i+1))-1<=tx) i++;while (sy+(1<<(j+1))-1<=ty) j++;return max(max(g[i][j][sx][sy],g[i][j][tx-(1<<i)+1][sy]),max(g[i][j][sx][ty-(1<<j)+1],g[i][j][tx-(1<<i)+1][ty-(1<<j)+1]));
}
int main(){freopen(fin,"r",stdin);freopen(fout,"w",stdout);scanf("%d%d",&n,&m);for (i=1;i<=n;i++){for (j=1;j<=m;j++){scanf("%d",&k);if (k) f[i][j]=min(f[i][j-1],min(f[i-1][j-1],f[i-1][j]))+1;else f[i][j]=0;g[0][0][i][j]=f[i][j];}}for (i=0;(1<<i)<=n;i++){for (j=0;(1<<j)<=m;j++){if (i==0 && j==0) continue;for (k=1;k+(1<<i)-1<=n;k++)for (l=1;l+(1<<j)-1<=m;l++){if (j==0) g[i][j][k][l]=max(g[i-1][j][k][l],g[i-1][j][k+(1<<(i-1))][l]);else g[i][j][k][l]=max(g[i][j-1][k][l],g[i][j-1][k][l+(1<<(j-1))]);}}}scanf("%d",&t);for (;t;t--){scanf("%d%d%d%d",&i,&j,&k,&l);if (getmax(i,j,k,l)==0) printf("0\n");else {lef=1;rig=min(k-i+1,l-j+1);int l1=lef,r1=rig;while (lef<rig){mid=(lef+rig)/2;if (getmax(i+mid-1,j+mid-1,k,l)>=mid) lef=mid;else rig=mid-1;if (l1==lef && r1==rig) break;else l1=lef,r1=rig;}if (getmax(i+rig-1,j+rig-1,k,l)>=rig) lef=rig;printf("%d\n",lef);}}return 0;
}

启发

静态子矩阵求和可以使用RMQ。


这类型(无修改离线多次询问)的问题可以这样考虑:
1.由询问次数决定时间复杂度;
2.考虑一次询问如何在规定复杂度内求出答案。
3.考虑预处理在2中所需要的信息。


这题类似于妮厨的愤怒,那样处理三元取最值。

转载于:https://www.cnblogs.com/hiweibolu/p/6714872.html

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

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

相关文章

java单例模式 uml_Java设计模式系列之单例模式

单例模式的定义一个类有且仅有一个实例&#xff0c;并且自行实例化向整个系统提供。比如&#xff0c;多程序读取一个配置文件时&#xff0c;建议配置文件时&#xff0c;建议配置文件封装成对象。会方便操作其中的数据&#xff0c;又要保证多个程序读到的是同一个配置文件对象&a…

Linux安全基础:grep命令的使用

grep &#xff08;缩写来自Globally search a Regular Expression and Print&#xff09;是一种强大的文本搜索工具&#xff0c;它能使用正则表达式搜索文本&#xff0c;并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。 grep的工作方式是这样的&#xff0c;它在…

php面试题2018mysql_PHP程序员必会的MySQL面试题

01数据库字段类型MySQL常见的数据类型有哪些&#xff1f;MySQL数据类型分为数值类型、日期时间型和字符串类型。数值类型常见的是TINYINT、INT、DECIMAL&#xff0c;日期类型常见的有DATE、DATETIME&#xff0c;字符串类型常见的有CHAR、VARCHAR、TEXT。详细介绍见文章末尾的图…

【开发软件】推荐一款MAC OS X 下php集成开发环境mamp

这里给大家推荐一款在mac上搭建WEB服务器环境的集成环境安装软件&#xff0c;非常的好用&#xff0c;需要的朋友可以拿去&#xff0c;不用谢 ^_^之前苦于mac上搭建本地服务器之艰辛&#xff0c;找寻好久都没找到一款类似windows上集成的本地服务器环境&#xff0c;诸如phpstudy…

java 2分钟_java开发中的那些事(5)--------一点经历,败给2分钟的2个小时

特意记下这个经历&#xff0c;这个让我感慨万千又斗志昂扬的一次经历&#xff0c;这是经验&#xff0c;也是生活。故事的始末是这种&#xff0c;先给大家上几句代码&#xff0c;如今身在家中&#xff0c;仅仅能凭记忆敲打几行&#xff0c;大致意思倒不会错&#xff1a;{field:c…

java cygwin 乱码_windows10乱码怎么解决

如 图组360没有乱码 但字体明显不对字体不正常更明显了第三方浏览器要么乱码 要么根本打不开安装java时也是乱码 要不是我安装过 我根本不知道按钮在哪里eclipse也逃脱不了显示错误的命运(ps:第一行代码 或是说注释)酷狗音乐就更惨了这是cmd命令执行 dir /?时得到的帮助信息 我…

java怎么打增量包_eclipse实现JavaWeb应用增量打包

很多情况下&#xff0c;项目是不允许全量发布的&#xff0c;所以你得把有做修改的文件一个个挑出来&#xff0c;如果有成千上百的文件&#xff0c;你是不是要头大了? 以下方法应该可以让你得到解救!前提是你是用装有svn plugin的eclipse上做开发。第一步&#xff0c;用svn生成…

java 定时器框架_java定时器

java定时器什么是Java定时器&#xff1f;Java 定时器就是在给定的间隔时间执行自己的任务; Java实现定时器有以下几种:通过Timer来实现定时任务Timer 是来自 java.util.Timer指定时间执行任务/*** author spp* date 2020-10-14 09:04**/public class TimerTest {public static …

Flume之核心架构深入解析

我们一起来了解Source、Channel和Sink的全链路过程。 一、Flume架构分析 这个图中核心的组件是&#xff1a; Source&#xff0c;ChannelProcessor&#xff0c;Channel&#xff0c;Sink。他们的关系结构如下&#xff1a; Source {ChannelProcessor {Channel ch1Channel ch2……

java连接cdh集群_有一台电脑需要通过beeline的方式连接到CDHclouderahadoop集群,提示报错。...

有一台电脑需要通过beeline的方式连接到CDHclouderahadoop集群&#xff0c;提示报错。码农的苦恼2020-02-24 10:25:48目前客户端服务器已经开通了3000-60000的端口访问权限&#xff0c;请问还需要开通哪些权限。谢谢&#xff01;17/11/14 09:19:40 WARN conf.HiveConf: DEPRECA…

最长公共子序列及其引申问题

最长公共子序列是经典的动态规划问题&#xff0c;在很多书籍和文章中都有介绍&#xff0c;这里对这一经典算法进行回顾并对两个follow up questions进行总结和分析。 1. 回顾LCS&#xff08;longest common subsequence&#xff09;解法&#xff0c;求LCS长度 典型的双序列动态…

怎么用java实现打字功能_怎么用JAVA编写一个打字游戏

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这个帖子是一年前发的&#xff0c;当时对Java也不是很懂&#xff0c;我看大家都对这个感兴趣&#xff0c;我把代码改了一下&#xff0c;发布出来&#xff0c;其实还有很多的地方还没有完善...&#xff0c;这个只能算一个Demo&#…

pythonfor循环列表排序_Python Day4950(for循环语句整理)

班长的图Python for循环可以遍历任何序列的项目&#xff0c;如一个列表或者一个字符串。一、Python 循环遍历列表元素1.for i in list():2.for i in enumerate(list):2.for i in range(len(list)):for i in list():for i in enumerate(list):for i in range(len(list)):二、Pyt…

Java异常处理深入理解_关于java异常处理机制的深入理解.doc

关于java异常处理机制的深入理解.doc 关于JAVA异常处理机制的深入理解1引子TRYCATCHFINALLY恐怕是大家再熟悉不过的语句了&#xff0c;而且感觉用起来也是很简单&#xff0c;逻辑上似乎也是很容易理解。不过&#xff0c;我亲自体验的“教训”告诉我&#xff0c;这个东西可不是想…

java 格式化 布尔型_这么久才知道Java中的format很强大!

Java中允许我们对指定的对象进行某种格式化&#xff0c;从而得到我们想要的格式化样式。Format首先介绍java.text包中的FormatForamt是一个抽象基类&#xff0c;其具体子类必须实现format(Object obj, StringBuffer toAppendTo, FieldPosition pos)和parseObject(String source…

【腾讯优测干货分享】从压测工具谈并发、压力、吞吐量

本文来自于腾讯bugly开发者社区&#xff0c;非经作者同意&#xff0c;请勿转载&#xff0c;原文地址&#xff1a;http://dev.qq.com/topic/580d914e07b7fc1c26a0cf7c 前言 随着部门业务的拓展&#xff0c;我们有了很多性能测试的机会&#xff0c;但在实战中&#xff0c;慢慢发现…

MySQL5.6 PERFORMANCE_SCHEMA 说明

背景&#xff1a; MySQL 5.5开始新增一个数据库&#xff1a;PERFORMANCE_SCHEMA&#xff0c;主要用于收集数据库服务器性能参数。并且库里表的存储引擎均为PERFORMANCE_SCHEMA&#xff0c;而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。MySQL5.5默认是关闭的&#xff0c;…

04_类与对象_课程动手动脑问题以及课后实验性问题及解答集锦

Answer: 动手动脑&#xff1a; 1——以下代码为何无法通过编译&#xff1f;哪儿出错了&#xff1f; Answer: 因为类Foo的构造函数是有一个参数的&#xff0c;所以我们在new一个Foo类的对象时必须赋予一个符合条件的实参。 2—— 请运行TestStaticInitializeBlock.java示例&…

php如果能编译就完美了,centos7 完美编译PHP7 php-7.2.10.tar.gz

1.下载去官网下载。2、上传并解压tar -zxvf php-7.2.10.tar.gz3、进入文件夹cd php-7.2.104、安装相关依赖包yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel gd gd-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel e2fsprogs e…

2017年php还能火多久,PHP还会火吗?

据不完全数据得知&#xff0c;我国对PHP人才非常紧缺&#xff0c;大约每年有50万人左右。伴随着近几年信息化&#xff0c;智能化&#xff0c;网络化的发展&#xff0c;PHP的发展前景也是不可估量的&#xff0c;那么&#xff0c;你知道是什么影响PHP继续火热的吗?下面我们就来分…