【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大小的 ...
随机推荐
- python访问mysql将返回的表转化为json
## Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreement ...
- 编译android源码官方教程(4)开始编译
Preparing to Build IN THIS DOCUMENT Obtain proprietary binaries Download proprietary binaries Extrac ...
- HDU 5030 Rabbit's String
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5030 题意:给出一个长度为n的串S,将S分成最多K个子串S1,S2,……Sk(k<=K).选出每 ...
- socket,TCP/IP的理解
TCP/IP 要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间 ...
- CodeForces 219B Special Offer! Super Price 999 Bourles!
Special Offer! Super Price 999 Bourles! Time Limit:1000MS Memory Limit:262144KB 64bit IO For ...
- mysql数据小姿势
CREATE TABLE `information` ( `NUMBER` bigint(20) NOT NULL AUTO_INCREMENT,//将number设为自增字段 `USER_NAM ...
- ServiceStack.OrmLite 笔记2 -增
ServiceStack.OrmLite 笔记2 这篇主要介绍 增加 db.Insert(new Employee { Id = 1, Name = "Employee 1" }) ...
- 数据库mysql中having 和where的区别
having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前.而 having子句在聚合后对组记录进行筛选. ...
- MYSQL 表级锁 行级锁 页面锁区别
myisam存储引擎默认是表级锁 innodb存储引擎默认是行级锁 DBD存储引擎默认是页面锁 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发出锁冲突的概率最高,并发度最低.行级锁:开锁大, ...
- Json-lib使用 转载
1.从Object到String 要先用Object对象构造一个JSONObject或者JSONArray对象,然后调用它的toString()方法即可 (1)示例一 1 Book book=new ...