正题

题目链接:https://www.luogu.org/problemnew/show/P1169


题目大意

一个矩阵中求一个最大的子矩阵和子正方形使得它们其中都是01交错。


解题思路

lefti,jleft_{i,j}lefti,j​表示(i,j)(i,j)(i,j)往左扩展多远,righti,jright_{i,j}righti,j​表示(i,j)(i,j)(i,j)往右扩展多远,upi,jup_{i,j}upi,j​表示(i,j)(i,j)(i,j)向上扩展多少个。

然后对于每个点作为最下边的点时答案为
leni,j=upi,j+max{leftk,j,rightk,j}(j−k&lt;upi,j)len_{i,j}=up_{i,j}+max\{left_{k,j},right_{k,j}\}(j-k&lt;up_{i,j})leni,j​=upi,j​+max{leftk,j​,rightk,j​}(j−k<upi,j​)
ans1=upi,j∗leni,jans1=up_{i,j}*len_{i,j}ans1=upi,j​∗leni,j​
ans2=min{upi,j,leni,j}2ans2=min\{up_{i,j},len_{i,j}\}^2ans2=min{upi,j​,leni,j​}2


codecodecode

// luogu-judger-enable-o2
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=2100;
int n,m,a[N][N],right[N][N],left[N][N],up[N][N],ans1,ans2;
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&a[i][j]);for(int i=1;i<=n;i++)for(int j=m;j>=1;j--){right[i][j]=(a[i][j]!=a[i][j+1]?right[i][j+1]:j);if(j==m) right[i][j]=m;}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){left[i][j]=(a[i][j]!=a[i][j-1]?left[i][j-1]:j);if(j==1) left[i][j]=1;}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){up[i][j]=1;if(i>1&&a[i][j]!=a[i-1][j]){left[i][j]=max(left[i][j],left[i-1][j]);right[i][j]=min(right[i][j],right[i-1][j]);up[i][j]=up[i-1][j]+1;}int l=right[i][j]-left[i][j]+1;int w=min(up[i][j],l); ans1=max(l*up[i][j],ans1);ans2=max(w*w,ans2);}printf("%d\n%d",ans2,ans1);
}

P1169-[ZJOI2007]棋盘制作【贪心】相关推荐

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

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

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

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

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

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

  4. P1169 [ZJOI2007]棋盘制作 DP悬线法

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

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

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

  6. BZOJ-1057: [ZJOI2007]棋盘制作(单调栈)

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

  7. 【洛谷P1169】[ZJOI2007]棋盘制作

    棋盘制作 题目链接 这个题是[USACO5.3]巨大的牛棚Big Barn和玉蟾宫的结合 一道顶两道毒瘤! 题解: 首先,棋盘有两种选法: 1.任意白格(x,y) (x+y)%2=0 ,任意黑格(x, ...

  8. [ZJOI2007]棋盘制作 报表统计 矩阵游戏 时态同步

    好长时间了..简要除草. 棋盘制作:经典dp... 报表统计:明显数据结构,,,但我没想出来,第一问可以用堆,第二问用平衡树. 矩阵游戏:好吧.一眼二分图,匈牙利过. 时态同步:树形dp,貌似不难,( ...

  9. [ZJOI2007]棋盘制作

    https://www.luogu.org/problemnew/show/P1169 C++版本一 悬线法 以l[i][j]表示(i,j)这个点向左走碰到的第一个障碍,r[i][j]表示向右走碰到的 ...

  10. 【单调栈 动态规划】bzoj1057: [ZJOI2007]棋盘制作

    好像还有个名字叫做"极大化"? Description 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源 于易经的思想,棋盘是一个8 ...

最新文章

  1. SSM框架下结合 log4j、slf4j打印日志
  2. Firefox 突然拉黑中国用户
  3. Jumping Jack
  4. 【渝粤教育】广东开放大学 社会保障学 形成性考核 (34)
  5. java property_property在Java中的用法
  6. 如何防止mysql数据库被勒索
  7. 修改命令有趣的Linux命令
  8. App跳转到权限设置界面
  9. java http 工具类_Java发送Http请求工具类
  10. android 弹幕礼物,Android的简易弹幕
  11. 金橙子打标卡labview打标开发没头绪?c#封装成dll后labview调用真香!
  12. 使用CAD手机看图软件打开图纸压缩包的方法技巧
  13. 超详细的Windows新装机流程(自装Windows系统、设置BIOS等)
  14. 华为 - 路由交换基础
  15. 最简示例 简介洗牌函数 之 __shfl_up_sync() cuda 之 shuffle
  16. 阿里云是干什么用的?
  17. 关联规则:营销购物,自有乾坤
  18. 从键盘读入一个字符串,若遇到字母,则输出0;若遇到数字则输出1;否则不输出。例如:输入ab@12c,输出00110
  19. 数学故事在小学数学课堂教学中的应用研究
  20. 《千手智能打铃》使用说明

热门文章

  1. C语言程序设计答案黄保和编,C语言程序设计答案(黄保和编)第5章.pdf
  2. php按时间分组的sql语句,(SQL语句)按指定时间段分组统计
  3. Java程序设计当中包的使用_【学习笔记】 唐大仕—Java程序设计 第4讲 类、包和接口之4.2 类的继承...
  4. php的old函数,laravel单元测试之phpUnit中old()函数报错解决
  5. python实例方法、类方法、静态方法的区别_Python 实例方法、类方法、静态方法的区别与作用...
  6. PHP秒杀截流原理,节流阀和去抖动的基本实现方法介绍
  7. js重新渲染div_前端工程师必备:从浏览器的渲染到性能优化
  8. activemq和mysql_activeMQ 填坑记
  9. 7-51 两个有序链表序列的合并 (20 分)(vector做法)
  10. [JavaWeb-JavaScript]JavaScript_Array数组对象