题目

传送门: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]棋盘制作(悬线法)的更多相关文章

  1. BZOJ 1057: [ZJOI2007]棋盘制作 悬线法求最大子矩阵+dp

    1057: [ZJOI2007]棋盘制作 Description 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑 ...

  2. P1169 [ZJOI2007]棋盘制作 && 悬线法

    P1169 [ZJOI2007]棋盘制作 给出一个 \(N * M\) 的 \(01\) 矩阵, 求最大的正方形和最大的矩形交错子矩阵 \(n , m \leq 2000\) 悬线法 悬线法可以求出给 ...

  3. 洛谷P1169 [ZJOI2007]棋盘制作 悬线法 动态规划

    P1169 [ZJOI2007]棋盘制作 (逼着自己做DP 题意: 给定一个包含0,1的矩阵,求出一个面积最大的正方形矩阵和长方形矩阵,要求矩阵中相邻两个的值不同. 思路: 悬线法. 用途: 解决给定 ...

  4. P1169 [ZJOI2007]棋盘制作[悬线法/二维dp]

    题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8 \times 88×8大小的黑白相间的方阵,对应八八六十四卦,黑白 ...

  5. P1169 [ZJOI2007]棋盘制作——悬线法

    ---恢复内容开始--- 给你一个矩阵,选出最大的棋盘,棋盘的要求是黑白相间(01不能相邻),求出最大的正方形和矩形棋盘的面积: 数据n,m<=2000; 这个一看就可能是n2DP,但是写不出. ...

  6. [ZJOI2007]棋盘制作 悬线法dp 求限制下的最大子矩阵

    https://www.luogu.org/problemnew/show/P1169 第一次听说到这种dp的名称叫做悬线法,听起来好厉害 题意是求一个矩阵内的最大01交错子矩阵,开始想的是dp[20 ...

  7. P1169 [ZJOI2007]棋盘制作 悬线法or单调栈

    思路:悬线法\(or\)单调栈 提交:2次 错因:正方形面积取错了\(QwQ\) 题解: 悬线法 讲解:王知昆\(dalao\)的\(PPT\) 详见代码: #include<cstdio> ...

  8. 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)) ...

  9. 【BZOJ-3039&1057】玉蟾宫&棋盘制作 悬线法

    3039: 玉蟾宫 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 753  Solved: 444[Submit][Status][Discuss] D ...

  10. bzoj 1057: [ZJOI2007]棋盘制作 单调栈

    题目链接 1057: [ZJOI2007]棋盘制作 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 2027  Solved: 1019[Submit] ...

随机推荐

  1. hdu 2444 The Accomodation of Students 判断二分图+二分匹配

    The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  2. python 删除字典元素

    myDict = {,,,} print(myDict) if 'a' in myDict: del myDict['a'] print(myDict)

  3. render:h => h(App) 是什么意思?

    在学习vue.js时,使用vue-cli创建了一个vue项目,main.js文件中有一行代码不知道什么意思.在网上搜索得到如下解答: 参考一:https://www.cnblogs.com/longy ...

  4. SpringMVC注解@RequestMapping @RequestParam @ResponseBody 和 @RequestBody 解析

    SpringMVC Controller层获取参数及返回数据的方式: @RequestMapping @RequestMapping(“url”),这里的 url写的是请求路径的一部分,一般作用在 C ...

  5. Linux Mint 18.1安装nvidia驱动

    硬件环境:Dell Inspiron 7557笔记本(i7,8G,GTX960M) 软件环境:Linux Mint 18.1(基于Ubuntu 16.04) 问题描述: Linux Mint 18.1 ...

  6. 重磅教程!帮你全面彻底搞定Material design的学习笔记

    http://www.uisdc.com/comprehensive-material-design-note

  7. 谈一谈手机WebApp的fixed属性(手机上的固定栏)【转】

    1.iphone/android原生app常见结构 似乎,所有的手机应用,都遵循这样的布局:固定的顶部+固定的底部+可滚动在中间区域.这种“雷同”的模式让人恶心,却不得不承认这是一种很规矩却又很实用的 ...

  8. 《转》深入理解Activity启动流程(一)–Activity启动的概要流程

    本文原创作者:Cloud Chou. 原文地址:http://www.cloudchou.com/android/post-788.html Android中启动某个Activity,将先启动Acti ...

  9. secureCRT不能输入

    用secureCRT建了一个串口COM1后,连接上开发板后,可以正确接受和显示串口的输出,但是按键输入无效. 解决: Session Options -> Connection -> Se ...

  10. Linux运维学习笔记-目录知识点总结

    目录知识点总结: Note: 1.创建一个/server/scripts目录,用于存放脚本(命令:mkdir -p /server/scripts) 2.安装软件时,安装路径统一为/usr/local ...