【bzoj1057】棋盘制作
题意
给定\(n*m\)的棋盘,每个格子有0或1其中的一种颜色。
求一个最大的正方形,满足正方形内0和1相互间隔。
求一个最大的矩形,满足矩形内0和1相互间隔。
\(n,m\leq 2000\)
分析
这是个棋盘,满足相邻两个颜色不同。
我们不难想到对于一个格子\((i,j)\),若\((i+j)\mod 2=1\),那么把\((i,j)\)这个格子的颜色取反。
原问题就变成了求最大相同颜色正方形和最大相同颜色矩形。
只要能解决最大相同颜色矩形,那么正方形的问题也可以用类似的方法解决,所以问题转化为求最大相同颜色矩形。
这是个二维的问题,我们先考虑一维的问题怎样解决:
给定\(c[i]\),求最长一段\([l,r]\),使得\(c[l]=c[l+1]=...=c[r]\)
这是个经典的最大子段问题,我们可以通过贪心求出,对于每个位置求出\(ex[i]\),表示最大的\(ex\),满足\(c[i]=c[i+1]=...=c[i+ex[i]-1]\)
在二维上,我们对于每一行,预处理出\(ex[i][j]\):在第\(i\)行上,最大的\(ex\),使得\(c[i][j]=c[i][j+1]=...=c[i][j+ex-1]\)
那么,一种直观的想法:我们枚举每一个左上角的位置\((i,j)\),枚举纵向向下伸长到\(k\),那么长度为\(w=\min(ex[i][j],ex[i+1][j],...,ex[k][j])\),用\(w*k\)更新答案。
即求:\(\max_{1\leq i\leq m,1\leq j\leq k\leq n}(k-j+1)*(\min_{p=j}^k ex[i][p])\)
但是,这是\(O(n^3)\)的...
我们考虑能否继续优化,即减少枚举量。
思考这样一条性质:\(\min_{p=j}^k ex[i][p]\)必然等于某个\(ex\)。
所以我们枚举\(ex[i][p]\),然后看它最多能向上伸展多少,最多能向下伸展多少,用\(ex[i][p]*len\)即可。
所以只需要快速处理出最多向上伸展多少,向下伸展多少即可。
用单调队列+二分或者ST表可以轻松解决。
小结
(1)最值问题的处理手段
这种东西从今天开始正式被我废除掉了。
并没有什么用。
(2)枚举超时可能会出现在两个问题上:①枚举量过大 ②统计枚举的方法不够优
为此,我们可以有两种考虑方法:
①极大化思想:减少枚举量,找出不可能的满足什么条件,进而可能的满足什么条件
②使用各种数据结构或者算法进行优化
(3)棋盘问题
棋盘问题要明确几个基本的模型和思路。
①染色法
②插头dp,状态压缩dp
③处理处第一行,推出之后的情况
④爆搜
⑤网络流
【bzoj1057】棋盘制作的更多相关文章
- 【BZOJ-3039&1057】玉蟾宫&棋盘制作 悬线法
3039: 玉蟾宫 Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 753 Solved: 444[Submit][Status][Discuss] D ...
- BZOJ1057 [ZJOI2007]棋盘制作(极大化思想)
1057: [ZJOI2007]棋盘制作 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 1848 Solved: 936 [Submit][Sta ...
- BZOJ1057 [ZJOI2007]棋盘制作 【最大同色矩形】
1057: [ZJOI2007]棋盘制作 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 3248 Solved: 1636 [Submit][St ...
- 洛谷 P1169 [ZJOI2007]棋盘制作
2016-05-31 14:56:17 题目链接: 洛谷 P1169 [ZJOI2007]棋盘制作 题目大意: 给定一块矩形,求出满足棋盘式黑白间隔的最大矩形大小和最大正方形大小 解法: 神犇王知昆的 ...
- bzoj 1057: [ZJOI2007]棋盘制作 单调栈
题目链接 1057: [ZJOI2007]棋盘制作 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 2027 Solved: 1019[Submit] ...
- BZOJ 1057: [ZJOI2007]棋盘制作( dp + 悬线法 )
对于第一问, 简单的dp. f(i, j)表示以(i, j)为左上角的最大正方形, f(i, j) = min( f(i + 1, j), f(i, j + 1), f(i + 1, j + 1)) ...
- [P1169] 棋盘制作 &悬线法学习笔记
学习笔记 悬线法 最大子矩阵问题: 在一个给定的矩形中有一些障碍点,找出内部不包含障碍点的,边与整个矩形平行或重合的最大子矩形. 极大子矩型:无法再向外拓展的有效子矩形 最大子矩型:最大的一个有效子矩 ...
- 悬线法 || BZOJ 1057: [ZJOI2007]棋盘制作 || Luogu P1169 [ZJOI2007]棋盘制作
题面:P1169 [ZJOI2007]棋盘制作 题解: 基本是悬线法板子,只是建图判断时有一点点不同. 代码: #include<cstdio> #include<cstring&g ...
- P1169 [ZJOI2007]棋盘制作 && 悬线法
P1169 [ZJOI2007]棋盘制作 给出一个 \(N * M\) 的 \(01\) 矩阵, 求最大的正方形和最大的矩形交错子矩阵 \(n , m \leq 2000\) 悬线法 悬线法可以求出给 ...
- [luogu P1169] [ZJOI2007]棋盘制作
[luogu P1169] [ZJOI2007]棋盘制作 题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的 ...
随机推荐
- OS开发(Objective-C)常用库索引
code4app.com 这网站不错,收集各种 iOS App 开发可以用到的代码示例 cocoacontrols.com/ 英文版本的lib收集 objclibs.com/ 精品lib的收集网站 h ...
- 使用Windows安装的最高版本IE内核加载内嵌页(转载)
客户端程序内嵌Webbrowser控件时,默认情况都是使用IE7兼容模式打开网页的.但是IE7有很多新的特性不支持,导致无法正常显示出来,所以需要强制使用高版本的IE内核来加载.渲染. void Ch ...
- 解决Duilib创建的win32窗口拖到屏幕上边缘自动最大化
转载:http://bbs.csdn.net/topics/390842294 使用Duilib创建窗口的时候,假如有这样一个需求: 1.窗口大小规定 2.不可拖拽改变窗口大小 3.双击标题栏禁止最大 ...
- 我的android学习经历29
四大组件之广播接收者BroadcastReceiver 新建广播接收器 需要新建一个类继承类BroadcastReceiver,并且重写其中的方法onReceive(),不要在这个方法中添加过多的逻辑 ...
- CodeForces 146A Lucky Ticket
Lucky Ticket Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submi ...
- jQuery函数attr()和prop()的区别,val()
[自己总结,详情见下面转录的文章]: attr()用于操作html属性,prop()属性用于操作DOM属性 ①: 很多情况下可以互用 ②:attr()独自适用的情况,自定义的html属性,html属性 ...
- Pre-Update and Pre-Insert Trigger Examples For Oracle Forms
See also: Why And When To Use Pre-Update and Pre-Insert Triggers In Oracle FormsPre-Update Fires dur ...
- 发布《Linux工具快速教程》
发布<Linux工具快速教程> 阶段性的完成了这本书开源书籍,发布出来给有需要的朋友,同时也欢迎更多的朋友加入进来,完善这本书: 本书Github地址:https://github.com ...
- XML约束——Schema约束
XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性 XML Schema VS DTD: •XML Schema符合XML语法结构. • ...
- 关于ListView嵌套GridView中的onItemClickListener失效问题
一开始在ListView中设置了onItemClickListener,在里面Log输出Item列表的位置,完全没有反应, 网上大部分说的什么把子组件屏蔽掉(而且好多都是转载的一样的), 可是我希望的 ...