题目链接

  唉……这种题放在NOIP以前我是会做的……但是为什么现在反而不会了……

  单调栈。预处理每个点向上能扩展的最大距离,左右用两遍单调栈扫一遍。注意边界。

  

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<algorithm>
  4. #include<cstring>
  5. #include<cctype>
  6. using namespace std;
  7.  
  8. inline long long read(){
  9. long long num=,f=;
  10. char ch=getchar();
  11. while(!isdigit(ch)){
  12. if(ch=='-') f=-;
  13. ch=getchar();
  14. }
  15. while(isdigit(ch)){
  16. num=num*+ch-'';
  17. ch=getchar();
  18. }
  19. return num*f;
  20. }
  21.  
  22. int q[][];
  23. int d[][][];
  24. int w[];int s[];
  25. int stack[],top;
  26. int ans;
  27. int cnt;
  28.  
  29. int main(){
  30. int n=read(),m=read();
  31. for(int i=;i<=n;++i)
  32. for(int j=;j<=m;++j){
  33. q[i][j]=read()^((i+j+)%);
  34. int now=q[i][j];
  35. d[i][j][now]=q[i-][j]==now?d[i-][j][now]+:;
  36. }
  37. for(int i=;i<=n;++i){
  38. memset(w,,sizeof(w)); top=;
  39. for(int j=;j<=m;++j){
  40. w[j]=j;
  41. while(top&&d[i][stack[top]][]>d[i][j][]) w[stack[top--]]=j-;
  42. stack[++top]=j;
  43. }
  44. //while(top) w[stack[top--]]=n;
  45. memset(s,,sizeof(s)); top=;
  46. for(int j=m;j>=;--j){
  47. s[j]=j;
  48. while(top&&d[i][stack[top]][]>d[i][j][]) s[stack[top--]]=j+;
  49. stack[++top]=j;
  50. }
  51. //while(top) s[stack[top--]]=1;
  52. for(int j=;j<=m;++j){
  53. ans=max(ans,(w[j]-s[j]+)*d[i][j][]);
  54. int MIN=min(w[j]-s[j]+,d[i][j][]);
  55. cnt=max(cnt,MIN*MIN);
  56. }
  57. }
  58. for(int i=;i<=n;++i){
  59. memset(w,,sizeof(w)); top=;
  60. for(int j=;j<=m;++j){
  61. w[j]=j;
  62. while(top&&d[i][stack[top]][]>d[i][j][]) w[stack[top--]]=j-;
  63. stack[++top]=j;
  64. }
  65. //while(top) w[stack[top--]]=n;
  66. memset(s,,sizeof(s)); top=;
  67. for(int j=m;j>=;--j){
  68. s[j]=j;
  69. while(top&&d[i][stack[top]][]>d[i][j][]) s[stack[top--]]=j+;
  70. stack[++top]=j;
  71. }
  72. //while(top) s[stack[top--]]=1;
  73. for(int j=;j<=m;++j){
  74. ans=max(ans,(w[j]-s[j]+)*d[i][j][]);
  75. int MIN=min(w[j]-s[j]+,d[i][j][]);
  76. cnt=max(cnt,MIN*MIN);
  77. }
  78. }
  79. printf("%d\n%d",cnt,ans);
  80. return ;
  81. }

【Luogu】P1169棋盘制作(单调栈)的更多相关文章

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

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

  2. [ZJOI2007]棋盘制作 (单调栈)

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

  3. BZOJ1057[ZJOI2007]棋盘制作 [单调栈]

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

  4. [ZJOI2007]棋盘制作 (单调栈,动态规划)

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

  5. luogu1169 棋盘制作 (单调栈)

    先预处理出来从每个位置 以0开始 往右交替最多能放多少格 然后就相当于对每一列做HISTOGRA #include<bits/stdc++.h> #define pa pair<in ...

  6. [P1169] 棋盘制作 &悬线法学习笔记

    学习笔记 悬线法 最大子矩阵问题: 在一个给定的矩形中有一些障碍点,找出内部不包含障碍点的,边与整个矩形平行或重合的最大子矩形. 极大子矩型:无法再向外拓展的有效子矩形 最大子矩型:最大的一个有效子矩 ...

  7. luogu 1169 棋盘制作(单调栈/悬线)

    luogu 1169 棋盘制作(单调栈/悬线) 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应 ...

  8. luogu 3467 [POI2008]PLA-Postering 单调栈

    题目描述: Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每行给出矩形的 ...

  9. 洛谷P1169 棋盘制作(悬线法)

    题目链接:https://www.luogu.org/problemnew/show/P1169 #include<bits/stdc++.h> #define fi first #def ...

随机推荐

  1. 抓取GridView "编辑"模式下,TextBox修改后的数值

    [FAQ]抓取GridView "编辑"模式下,TextBox修改后的数值 -- ASP.NET专题实务「上集」Ch.10 抓取GridView "编辑"模式下 ...

  2. 【转载】Cesium基础使用介绍

    既然给我发了参与方式,不参加似乎有点不给人面子,反正也没多少人看我的博客,那我就试试吧,也欢迎大家自己参与:2017年度全网原创IT博主评选活动投票:http://www.itbang.me/goVo ...

  3. HDU 5452 Minimum Cut (Spaning Tree)

    生成树的上的一个非根结点对应一条生成树上的边,然后这个结点的子树上连出去的边就对应去掉这条边的割, 然后就可以对树外的边求LCA,在LCA上标记,利用这个信息可以算出有多少条边在子树上,以及有多少条边 ...

  4. IOS CoreData 多表查询(下)

    http://blog.csdn.net/fengsh998/article/details/8123392 在iOS CoreData中,多表查询上相对来说,没有SQL直观,但COREDATA的功能 ...

  5. mybatis(一):思维导图

  6. python_100_静态方法

    class Dog(object): def __init__(self,name): self.name=name @staticmethod#实际上跟类没什么关系了 def eat():#def ...

  7. 【转】Popclip的JSON格式化扩展

    http://liuyunclouder.github.io/2016/09/29/JSONizer:Popclip的JSON格式化扩展 作为一个MAC党,不好好利用MAC的神兵利器,简直就是罪过.A ...

  8. 从输入url到页面加载完成发生了什么详解

    这是一道经典的面试题,这道题没有一个标准的答案,它涉及很多的知识点,面试官会通过这道题了解你对哪一方面的知识比较擅长,然后继续追问看看你的掌握程度.当然我写的这些也只是我的一些简单的理解,从前端的角度 ...

  9. sqlite 新建实体时出错

    解决方式 手动下载 问题原因

  10. nodejs 静态资源服务与接口代理跨域

    首先需要 npm install express 和 npm install request 代码如下: const express = require('express'); const path ...