【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大小的 ...
随机推荐
- 土豪聪要请客(stol)
土豪聪要请客(stol) 众所周知,聪哥(ndsf)是个土豪,不过你们不知道的是他的MZ和他的RMB一样滴多…… 某天土豪聪又赚了10^10000e的RMB,他比较开心,于是准备请客.他在自己在XX星 ...
- Ubuntu安装后的一些配置
对新安装的Ubuntu的一些配置: #移除无用包 apt-get remove libreoffice-common apt-get remove unity-webapps-common apt-g ...
- 工欲善其事必先利其器系列之:在VS里面折叠js代码
之前用vs写js的时候经常因为js代码过长而且不能像cs文件里面的方法一样进行折叠而抓狂,直到在扩展库发现了这款插件有了它就可以把代码进行折叠了 插件地址
- static变量在php和java中的生命周期
1. java的static变量伴随着java虚拟机的退出而消亡,java虚拟机运行期间,static变量一直存在 2. php的static变量只针对一次请求(一次php文件的执行),php文件执行 ...
- strip_tags,htmlspecialchars,htmlentities,stripslashes,addslashes学习小结
一.strip_tags 从字符串中去除 HTML 和 PHP 标记 string strip_tags ( string $str [, string $allowable_tags ] ) str ...
- SqlSever基础 union 与 union all的区别,即 重复项是否全部显示
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- 浏览器被hao.360.cn劫持怎么办
特么的现在互联网太没节操了,一大早发现我的浏览器被hao.360.cn劫持了,弄了好久都没弄好,后来一想可能是因为qvod的原因,这可是哥当年看片的神器啊…… 废话不说: 1,进入:C:\Progra ...
- 【Asp.Net使用EasyUI】EasyUI combox实现联动
很多时候都会用到combox的联动效果,选择上一个combox的值就自动带出这个值对应的其它信息,比如省市联动,最近我也刚好遇到了类似的要求,是用EasyUI combobox 控件完成的,如果是A ...
- CUBRID学习笔记 40 使用net修改数据
修改 connection.Open(); string queryString = "UPDATE nation set capital = 'X' where `code` = ...
- python_way day14 CSS
python_way day14 CSS 层叠样式表 一.CSS作用域: 二.css标签选择器 三.css样式 一.css作用域: 基本用法:style="样式" <body ...