【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;它在…

oschina mysql limit_Mysql中limit的用法

Mysql中limit的用法&#xff1a;在我们使用查询语句的时候&#xff0c;经常要返回前几条或者中间某几行数据&#xff0c;这个时候怎么办呢?不用担心&#xff0c;mysql已经为我们提供了这样一个功能。SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offsetLIMIT 子句…

centos yum “The requested URL returned error: 404”错误

CentOS-Base.repo里面变量不能被引用。直接修改CentOS-Base.repo修改baseurl这一行的变量即可&#xff0c; [rootbogon yum.repos.d]# yum makecache 转载于:https://www.cnblogs.com/bulvlanshan/p/5952155.html

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

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

html5移动端制作知识点总结

一、测试工具&#xff1a;1.Chrome 2.Opera Mobile二、分辨率&#xff1a;一般现代手机最小320px&#xff0c;最大640px。三、全屏流体设计&#xff1a; 1.腾讯新闻&#xff1a;http://xw.qq.com/ 2.途牛旅游&#xff1a;http://m.tuniu.com/ 固屏类流体设计 1.京东商城&#x…

python counter模块_python collections模块 计数器(counter)

一、计数器(counter)Counter是对字典类型的补充&#xff0c;用于追踪值的出现次数。ps&#xff1a;具备字典的所有功能 自己的功能把我写入的元素出现的多少次都计算出来import collections# 创建一个Counter对象obj collections.Counter(ddccbbqqaaa)print(obj)把我写入的元…

C#-类-string/Manth/Random/DateTime-及练习

类一、string类&#xff1a;.Length 字符串的长度 .Trim() 去掉开头以及结尾的空格.TrimStart() 去掉开头的空格.TrimEnd() 去掉结尾的空格 .ToLower() 全部转换为小写.ToUpper() 全部转换为大写 .Substring(m,n) 从m位开始截取n长度的字符串.Substring(m) 从m位开始截取至字符…

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

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

java操作日志记录_通用日志记录(java)

/*** 统一日志处理Handler*authorMingchenchen**/public classLogAopHandler {AutowiredprivateAuditLogDao auditLogDao;/*** controller层面记录操作日志* 注意此处是aop:around的 因为需要得到请求前的参数以及请求后接口返回的结果*throwsThrowable*/public Object doSaveL…

python数据类型-----字典

今天来总结下python3.4版本字典的一些操作方法。 字典是Python里面一种无序存储结构&#xff0c;存储的是键值对 key - value。关键字应该为不可变类型&#xff0c;如字符串、整数、包含不可变对象的元组。字典的创建很简单&#xff0c;用 d {key1 : value2, key2 : value2}的…

getmodifiers java_java – getModifiers()方法如何计算多个修饰符的值?

TL; DR&#xff1a;它将它们组合在一起形成bit field.要理解这一点,你需要了解二进制如何工作,这类似于十进制 – 让我们从那里开始&#xff1a;1 - public10 - static100 - final那么,101意味着什么&#xff1f;它必须是公共最终的,因为除了单个100和单个1之外,十进制系统中没…

克劳塞维茨与战争论

1. 基本战略 战争是政治的延续&#xff1b; 战争是死亡的盛筵&#xff1b;战争的目的就是消灭敌人&#xff1b;战略包括精神、物质、数学、地理、统计五大要素。战略战术的基本原则。克劳塞维茨认为&#xff0c;数量上的优势在战略战术上都是最普遍的制胜因素。虽然在实际作战时…

促销 java_原始促销 [Java]

JLS在这里不会“提升到更大的数据类型”,因为它不会为转移运算符执行二进制数字提升.这由JLS, Section 15.19涵盖.Unary numeric promotion (5.6.1) is performed on each operand separately. (Binary numeric promotion (5.6.2) is not performed on the operands.)一元数字促…

js基础一

## js三种引入方式&#xff08;内嵌&#xff08;用得少&#xff09;、内联、外联&#xff09;1、内联&#xff1a;&#xff08;写在head标签里&#xff09;<script type"text/javascript"> console.log("hello world");</script>2、外联&#…

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

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

用户登录和注册的功能

<form action"logincheck.php" method"post"> 用户名&#xff1a;<input type"text" name"username" /> <br /> 密码&#xff1a;<input type"password" name"password" /&g…

java cygwin 乱码_windows10乱码怎么解决

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

【题目描述】 商店里出售n种花&#xff0c;现打算购买m支花&#xff0c;每种花最多购买1支&#xff0c;询问有多少种购买方案&#xff0c;输出方案数 mod p的值。 【输入描述】 输入三个整数n、m、p。 【输出描述】 输出一个整数&#xff0c;表示答案。 【输入样例】 4 2 5 【输…

java employee list_JSP中List中的$ {employee.id}抛出java.lang.NumberFormat

我有一个JSP页面&#xff0c;当List从下面的方法中显示时&#xff0c;它可以正常工作。RequestMapping(value { "getAllEmployees", "/" })public ModelAndView getAllEmployees() {// logger.info("Getting the all Employees.");List employe…