题目描述

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

而我们的主人公小Q,正是国际象棋的狂热爱好者。作为一个顶尖高手,他已不满足于普通的棋盘与规则,于是他跟他的好朋友小W决定将棋盘扩大以适应他们的新规则。

小Q找到了一张由N \times MN×M个正方形的格子组成的矩形纸片,每个格子被涂有黑白两种颜色之一。小Q想在这种纸中裁减一部分作为新棋盘,当然,他希望这个棋盘尽可能的大。

不过小Q还没有决定是找一个正方形的棋盘还是一个矩形的棋盘(当然,不管哪种,棋盘必须都黑白相间,即相邻的格子不同色),所以他希望可以找到最大的正方形棋盘面积和最大的矩形棋盘面积,从而决定哪个更好一些。

于是小Q找到了即将参加全国信息学竞赛的你,你能帮助他么?

输入输出格式

输入格式:

包含两个整数NN和MM,分别表示矩形纸片的长和宽。接下来的NN行包含一个N \ \times MN ×M的0101矩阵,表示这张矩形纸片的颜色(00表示白色,11表示黑色)。

输出格式:

包含两行,每行包含一个整数。第一行为可以找到的最大正方形棋盘的面积,第二行为可以找到的最大矩形棋盘的面积(注意正方形和矩形是可以相交或者包含的)。

输入输出样例

输入样例#1:  复制

3 3
1 0 1
0 1 0
1 0 0

输出样例#1:  复制

4
6

说明

对于20\%20%的数据,N, M ≤ 80N,M≤80

对于40\%40%的数据,N, M ≤ 400N,M≤400

对于100\%100%的数据,N, M ≤ 2000N,M≤2000

悬线法的强大  甚至不用开dp数组

注意矩形和正方形的写法

#include<bits/stdc++.h>
using namespace std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);--i)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m)
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s);
#define ll long long
#define REP(i,N)  for(int i=0;i<(N);i++)
#define CLR(A,v)  memset(A,v,sizeof A)
#define inf 0x3f3f3f3f
//
const int N=2000+5;
int dp[N][N];
int mp[N][N];
int ri[N][N];
int le[N][N];
int up[N][N];int main()
{int n,m;RII(n,m);rep(i,1,n)rep(j,1,m)RI(mp[i][j]),up[i][j]=1,le[i][j]=j,ri[i][j]=j;rep(i,1,n)rep(j,2,m)if(mp[i][j]!=mp[i][j-1])le[i][j]=le[i][j-1];rep(i,1,n)repp(j,m-1,1)if(mp[i][j]!=mp[i][j+1])ri[i][j]=ri[i][j+1];int ans1=0,ans2=0;rep(i,1,n)rep(j,1,m){if(i>1)if(mp[i][j]!=mp[i-1][j]){le[i][j]=max(le[i][j],le[i-1][j]);ri[i][j]=min(ri[i][j],ri[i-1][j]);up[i][j]=up[i-1][j]+1;}int d=ri[i][j]-le[i][j]+1;ans2=max(ans2,d*up[i][j]);int d2=min(d,up[i][j]);//写成d2=min(j-le[i][j]+1,up[i][j])就是错的!ans1=max(ans1,d2*d2);}cout<<ans1<<endl<<ans2;return 0;
}

View Code

转载于:https://www.cnblogs.com/bxd123/p/10758988.html

P1169 [ZJOI2007]棋盘制作 DP悬线法相关推荐

  1. P1169 [ZJOI2007]棋盘制作(悬线法)

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

  2. bzoj 1057: 棋盘制作(悬线法)

    1057: [ZJOI2007]棋盘制作 Time Limit: 20 Sec  Memory Limit: 162 MB Submit: 2311  Solved: 1146 [Submit][St ...

  3. 【BZOJ1057】【codevs1428】棋盘制作,悬线法

    传送门1 传送门2 思路: 比较简单的悬线法 相关资料自行百度 看一会就能明白的 反正这个就是模板题啦(敲桌) 虽然说好不发水题了,但这次发上来也就是给大家也给自己当个板子使-- 代码: #inclu ...

  4. 洛谷 P4147 玉蟾宫 P1169 [ZJOI2007]棋盘制作(求最大子矩阵)

    题目: P4147 玉蟾宫: https://www.luogu.org/problemnew/show/P4147  P1169 [ZJOI2007]棋盘制作: https://www.luogu. ...

  5. 洛谷 P1169 [ZJOI2007]棋盘制作

    题目链接 P1169 [ZJOI2007]棋盘制作 题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8×8大小的黑白相 ...

  6. [ZJOI2007] 棋盘制作(单调栈 / DP悬线法)

    problem 洛谷链接 solution1-单调栈 很容易想到,预处理出每个点向上最大能延伸的长度,然后对每个点求一个矩阵面积. 然后思考优化,不难想到每次对一行进行求解. 每一行的所有列一起构成了 ...

  7. 算法学习笔记(2) 悬线法

    本文属于「算法学习」系列文章之一.之前的[数据结构和算法设计]系列着重于基础的数据结构和算法设计课程的学习,与之不同的是,这一系列主要用来记录对大学课程范围之外的高级算法学习.优化与使用的过程,同时也 ...

  8. 极大化思想/悬线法题集

    用于解决最大子矩阵问题 P1387 最大正方形 题意: 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 数据范围:n,m<=100 解法: 悬线法计算出每个点左右上三 ...

  9. 【题解】[ZJOI2007]棋盘制作

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

最新文章

  1. 最快捷的Linux命令查询工具来了:「我该怎么做XX」,一句话自动返回操作指南...
  2. Linux下python升级安装步骤
  3. kaggle房价预测问题
  4. 中文字符串函数php,php截取中文字符串函数实例,_PHP教程
  5. 33 个送给 Java 程序员的练手项目合集
  6. 中国唯一一位女性 Apache Member 潘娟:我们还是要走出自己与众不同的 My Way
  7. ALAssetsLibrary-代码操作iOS相册资源
  8. php多文件上传存储到表,PHP 实现一种多文件上传的方法
  9. 2021 年云原生技术发展现状及未来趋势
  10. Java描述设计模式(19):模板方法模式
  11. exit函数_Linux进程间通信详解(三) 消息队列及函数
  12. linux中kvm配置文件,linux操作系统内配置vlan+kvm虚拟机
  13. 一、Java编程环境
  14. 浙江大学计算机专业介绍,浙江大学计算机科学与技术专业课程设置
  15. 第三章 Unity基础之API
  16. android 高德地图动画,使用MotionLayout实现高德地图bottomSheets效果
  17. 深度优先搜索(DFS) -全排列
  18. Qt QList详解
  19. Windows 10, version 22H2 (updated March 2023) 简体中文版、英文版下载
  20. c语言初阶(第三篇)—函数

热门文章

  1. 销售和程序员哪个好_2020阿里云双11程序员种草清单
  2. Python爬虫学习之第七天---数据提取-lxml模块和Xpath使用
  3. 【囧词典】中国网络用语日语都怎么说(1)
  4. Windows CockroachDB入门上手
  5. 【转】建构修正版 Casper 协议
  6. cas14510-06-6|8-羟基喹啉-2-甲醛|8-Hydroxyquinoline-2-carbaldehyde黄色结晶粉末
  7. STM32】 DMA原理,步骤超细详解,一文看懂DMA
  8. fastjson已经导入到项目中但还是提示:java.lang.NoClassDefFoundError: com/alibaba/fastjson/JSON
  9. 如何监听URL的变化?
  10. 给宽带加速,一分钟学会 屡试屡爽!