【BZOJ】1057 [ZJOI2007]棋盘制作(悬线法)
题目
传送门:QWQ
分析
先把题目给出的矩阵变换一下,如果$ a[i][j] $中$ i+j \mod 2 = 1 $那么就对$ a[i][j] $取一下反。
接着就是求原图中最大的0、1子矩阵
详见lrj蓝书,悬线法维护最大0、1子矩阵。
代码
#include<bits/stdc++.h>
#define left lft
#define right rght
using namespace std;
const int maxn=;
int left[maxn][maxn], right[maxn][maxn], up[maxn][maxn] ;
int mp[maxn][maxn];
int sqr(int x){return x*x;}
int main(){
int n,m;scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++){
scanf("%d",&mp[i][j]); if((i+j)%) mp[i][j]^=;
}
int ans1=,ans2=;
for(int i=;i<=m;i++) right[][i]=1e9;
for(int i=;i<=n;i++){
left[i][]=; right[i][m]=m;
int le=,ri=m+;
for(int j=;j<=m;j++){
if(mp[i][j]){
up[i][j]=up[i-][j]+; left[i][j]=max(left[i-][j],le+); }
else{ le=j; }
} for(int j=m;j>=;j--){
if(mp[i][j]){
right[i][j]=min(ri-,right[i-][j]);
int linelen=right[i][j]-left[i][j]+ ,rowlen=up[i][j];
ans1=max(ans1,sqr(min(linelen,rowlen)));
ans2=max(ans2,linelen*rowlen);
}
else{
ri=j; right[i][j]=m;
}
}
} memset(right,,sizeof(right)); memset(left,,sizeof(left)); memset(up,,sizeof(up));
for(int i=;i<=m;i++) right[][i]=1e9;
for(int i=;i<=n;i++){
left[i][]=; right[i][m]=m;
int le=,ri=m+;
for(int j=;j<=m;j++){
if(!mp[i][j]){
up[i][j]=up[i-][j]+; left[i][j]=max(left[i-][j],le+); }
else{ le=j; }
} for(int j=m;j>=;j--){
if(!mp[i][j]){
right[i][j]=min(ri-,right[i-][j]);
int linelen=right[i][j]-left[i][j]+ ,rowlen=up[i][j];
ans1=max(ans1,sqr(min(linelen,rowlen)));
ans2=max(ans2,linelen*rowlen);
}
else{
ri=j; right[i][j]=m;
}
}
}
printf("%d\n%d",ans1,ans2); return ;
}
【BZOJ】1057 [ZJOI2007]棋盘制作(悬线法)的更多相关文章
- BZOJ 1057: [ZJOI2007]棋盘制作 悬线法求最大子矩阵+dp
1057: [ZJOI2007]棋盘制作 Description 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑 ...
- P1169 [ZJOI2007]棋盘制作 && 悬线法
P1169 [ZJOI2007]棋盘制作 给出一个 \(N * M\) 的 \(01\) 矩阵, 求最大的正方形和最大的矩形交错子矩阵 \(n , m \leq 2000\) 悬线法 悬线法可以求出给 ...
- 洛谷P1169 [ZJOI2007]棋盘制作 悬线法 动态规划
P1169 [ZJOI2007]棋盘制作 (逼着自己做DP 题意: 给定一个包含0,1的矩阵,求出一个面积最大的正方形矩阵和长方形矩阵,要求矩阵中相邻两个的值不同. 思路: 悬线法. 用途: 解决给定 ...
- P1169 [ZJOI2007]棋盘制作[悬线法/二维dp]
题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8 \times 88×8大小的黑白相间的方阵,对应八八六十四卦,黑白 ...
- P1169 [ZJOI2007]棋盘制作——悬线法
---恢复内容开始--- 给你一个矩阵,选出最大的棋盘,棋盘的要求是黑白相间(01不能相邻),求出最大的正方形和矩形棋盘的面积: 数据n,m<=2000; 这个一看就可能是n2DP,但是写不出. ...
- [ZJOI2007]棋盘制作 悬线法dp 求限制下的最大子矩阵
https://www.luogu.org/problemnew/show/P1169 第一次听说到这种dp的名称叫做悬线法,听起来好厉害 题意是求一个矩阵内的最大01交错子矩阵,开始想的是dp[20 ...
- P1169 [ZJOI2007]棋盘制作 悬线法or单调栈
思路:悬线法\(or\)单调栈 提交:2次 错因:正方形面积取错了\(QwQ\) 题解: 悬线法 讲解:王知昆\(dalao\)的\(PPT\) 详见代码: #include<cstdio> ...
- 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)) ...
- 【BZOJ-3039&1057】玉蟾宫&棋盘制作 悬线法
3039: 玉蟾宫 Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 753 Solved: 444[Submit][Status][Discuss] D ...
- bzoj 1057: [ZJOI2007]棋盘制作 单调栈
题目链接 1057: [ZJOI2007]棋盘制作 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 2027 Solved: 1019[Submit] ...
随机推荐
- Kotlin中常量和静态方法
常量 Java中: class StaticDemoActivity { public static final String LOAN_TYPE = "loanType"; pu ...
- npm package.json中的dependencies和devDependencies的区别
转载:http://www.cnblogs.com/jes_shaw/p/4497836.html 一个node package有两种依赖,一种是dependencies一种是devDependenc ...
- Linux 常用环境搭建
已有环境 python 2.6.6 jdk 1.7 —tomcat— —jenkins— —jq— —Python 2.7— —pip— —PIL— —Android SDK— —yum or apt ...
- MySQL —— 基本查询方法
MySQL —— 简单查询与按条件查询 在MySQL中从数据表中查询数据的基本语句时select语句. select语句基本语法格式: select 查询内容 from 表名 ...
- 构建工具 Ant、Maven和Gradle
构建工具的作用 依赖管理 测试,打包,发布 主流的构建工具 Ant:提供编译,测试,打包 Maven:在Ant的基础上提供了依赖管理和发布的功能 Gradle:在Maven的基础上使用Groovy管理 ...
- bzoj2330: [SCOI2011]糖果 差分约束系统
幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候 ...
- wepy绘制雷达图
代码如下: <style lang='less'> .radar-canvas2 { width: 690rpx; height: 420rpx; } </style> < ...
- Leetcode 51
//看了一次解析后,一次AC,用一个pos记录行列.class Solution { public: vector<vector<string>> solveNQueens(i ...
- <NET CLR via c# 第4版>笔记 第8章 方法
8.1 实例构造器和类(引用类型) 构造引用类型的对象时,在调用类型的实例构造器之前,为对象分配的内存总是先被归零 .没有被构造器显式重写的所有字段都保证获得 0 或 null 值. 构造器不能被继承 ...
- 解决eclipse maven install 造成JVM 内存溢出(java.lang.OutOfMemoryError: Java heap space)
maven install 报错信息: The system is out of resources.Consult the following stack trace for details.jav ...