悬线法

  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdio>
  4. using namespace std;
  5. int n, m, h[2005][2005], l[2005][2005], r[2005][2005], uu, iii=0, jjj=0;
  6. bool a[2005][2005];
  7. void rn(int &x){
  8. char ch=getchar();
  9. x = 0;
  10. while(ch<'0' || ch>'9') ch = getchar();
  11. while(ch>='0' && ch<='9'){
  12. x = x * 10 + ch - '0';
  13. ch = getchar();
  14. }
  15. }
  16. void work(){
  17. int ans=0, maxn=0;
  18. memset(h, 0, sizeof(h));
  19. for(int i=1; i<=n; i++){
  20. int x=1;
  21. for(int j=1; j<=m; j++)
  22. if(a[i][j]) l[i][j] = x;
  23. else l[i][j] = 1, x = j + 1;
  24. x = m;
  25. for(int j=m; j>=1; j--)
  26. if(a[i][j]) r[i][j] = x;
  27. else r[i][j] = m, x = j - 1;
  28. }
  29. for(int i=1; i<=m; i++) l[0][i] = 1, r[0][i] = m;
  30. for(int i=1; i<=n; i++)
  31. for(int j=1; j<=m; j++)
  32. if(a[i][j]){
  33. h[i][j] = h[i-1][j] + 1;
  34. l[i][j] = max(l[i][j], l[i-1][j]);
  35. r[i][j] = min(r[i][j], r[i-1][j]);
  36. ans = max(ans, (r[i][j]-l[i][j]+1)*h[i][j]);
  37. maxn = max(maxn, min(h[i][j], (r[i][j]-l[i][j]+1)));
  38. }
  39. iii = max(iii, maxn*maxn);
  40. jjj = max(jjj, ans);
  41. }
  42. int main(){
  43. cin>>n>>m;
  44. for(int i=1; i<=n; i++)
  45. for(int j=1; j<=m; j++){
  46. rn(uu);
  47. a[i][j] = uu;
  48. if((i+j)%2==0) a[i][j] ^= 1;
  49. }
  50. work();
  51. for(int i=1; i<=n; i++)
  52. for(int j=1; j<=m; j++)
  53. a[i][j] ^= 1;
  54. work();
  55. cout<<iii<<endl<<jjj<<endl;
  56. return 0;
  57. }

luogu1169 [ZJOI2007]棋盘制作的更多相关文章

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

    2016-05-31 14:56:17 题目链接: 洛谷 P1169 [ZJOI2007]棋盘制作 题目大意: 给定一块矩形,求出满足棋盘式黑白间隔的最大矩形大小和最大正方形大小 解法: 神犇王知昆的 ...

  2. BZOJ1057 [ZJOI2007]棋盘制作(极大化思想)

    1057: [ZJOI2007]棋盘制作 Time Limit: 20 Sec  Memory Limit: 162 MB Submit: 1848  Solved: 936 [Submit][Sta ...

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

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

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

  5. 悬线法 || BZOJ 1057: [ZJOI2007]棋盘制作 || Luogu P1169 [ZJOI2007]棋盘制作

    题面:P1169 [ZJOI2007]棋盘制作 题解: 基本是悬线法板子,只是建图判断时有一点点不同. 代码: #include<cstdio> #include<cstring&g ...

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

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

  7. [luogu P1169] [ZJOI2007]棋盘制作

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

  8. 1057: [ZJOI2007]棋盘制作

    1057: [ZJOI2007]棋盘制作 https://www.lydsy.com/JudgeOnline/problem.php?id=1057 分析: 首先对于(i+j)&1的位置0-& ...

  9. 【BZOJ 1057】 1057: [ZJOI2007]棋盘制作

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

随机推荐

  1. oo第三单元总结

    JML梳理 1. JM语法一般结构 public instance //jml中操作数据,并不要求实现 public invariant //不变式 public constraint //约束 no ...

  2. 安装cadence遇到vcredist.msi找不到问题

    在新装的win7 64位系统上安装cadence遇到了如下问题,最后一个群里面的大哥帮了大忙,解决办法如下: 用windowsinstallercleanup 将KB2467175清理掉再装caden ...

  3. Redis相关注意事项

    本文介绍了五个使用Redis使用时的注意事项.如果你在使用或者考虑使用Redis,你可以学习一下下面的一些建议,避免遇到以下提到的问题. 一.配置相关注意事项 1.涉及到内存的单位注意添加 b 1k ...

  4. json格式引起的 parse 报错

    json格式: {"ID":"4","PICDATAS":"[{"picDevNo": 1},{"p ...

  5. Android商城开发系列(二)——App启动欢迎页面制作

    商城APP一般都会在应用启动时有一个欢迎界面,下面我们来实现一个最简单的欢迎页开发:就是打开商城App,先出现欢迎界面,停留几秒钟,自动进入应用程序的主界面. 首先先定义WelcomeActivity ...

  6. XML(可拓展标记语言)

      XML 是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词.短语或块成为 ...

  7. 【UML】使用环境(转)

    http://blog.csdn.net/sds15732622190/article/details/49404169 用例图         用例图是在需求文档中使用的,但一定要配合用例一同使用. ...

  8. hdparm - 获取/设置硬盘参数

    总览 hdparm [ -a [扇区数] ] [ -A [0|1] ] [ -c [芯片组模式] ] [ -C ] [ -d [0|1] ] [ -f ] [ -g ] [ -i ] [ -k [0| ...

  9. Git初始化仓库

    Git global setup: git config --global user.name "再见理想" git config --global user.email &quo ...

  10. javaweb基础(11)_cookie的会话管理

    一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...