题目链接

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

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

  

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<cctype>
using namespace std; inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} int q[][];
int d[][][];
int w[];int s[];
int stack[],top;
int ans;
int cnt; int main(){
int n=read(),m=read();
for(int i=;i<=n;++i)
for(int j=;j<=m;++j){
q[i][j]=read()^((i+j+)%);
int now=q[i][j];
d[i][j][now]=q[i-][j]==now?d[i-][j][now]+:;
}
for(int i=;i<=n;++i){
memset(w,,sizeof(w)); top=;
for(int j=;j<=m;++j){
w[j]=j;
while(top&&d[i][stack[top]][]>d[i][j][]) w[stack[top--]]=j-;
stack[++top]=j;
}
//while(top) w[stack[top--]]=n;
memset(s,,sizeof(s)); top=;
for(int j=m;j>=;--j){
s[j]=j;
while(top&&d[i][stack[top]][]>d[i][j][]) s[stack[top--]]=j+;
stack[++top]=j;
}
//while(top) s[stack[top--]]=1;
for(int j=;j<=m;++j){
ans=max(ans,(w[j]-s[j]+)*d[i][j][]);
int MIN=min(w[j]-s[j]+,d[i][j][]);
cnt=max(cnt,MIN*MIN);
}
}
for(int i=;i<=n;++i){
memset(w,,sizeof(w)); top=;
for(int j=;j<=m;++j){
w[j]=j;
while(top&&d[i][stack[top]][]>d[i][j][]) w[stack[top--]]=j-;
stack[++top]=j;
}
//while(top) w[stack[top--]]=n;
memset(s,,sizeof(s)); top=;
for(int j=m;j>=;--j){
s[j]=j;
while(top&&d[i][stack[top]][]>d[i][j][]) s[stack[top--]]=j+;
stack[++top]=j;
}
//while(top) s[stack[top--]]=1;
for(int j=;j<=m;++j){
ans=max(ans,(w[j]-s[j]+)*d[i][j][]);
int MIN=min(w[j]-s[j]+,d[i][j][]);
cnt=max(cnt,MIN*MIN);
}
}
printf("%d\n%d",cnt,ans);
return ;
}

【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. GWT module 'xxx' may need to be (re)compiled解决办法

    使用GWT Eclipse Plug-in开发GWT应用,启动程序,在浏览器地址栏中输入http://127.0.0.1:8888/HelloWorld.html,没有出现我所期望的结果,而是弹出如下 ...

  2. 前端面试题总结(二)CSS篇

    前端面试题总结(二)CSS篇 一.link和@import的区别? link属于HTML标签,可以引入出css以外的事务,如RSS,而@import是css提供的,只能加载css文件. link会在页 ...

  3. 第008课_第1个ARM落版程序及引申

    form:第008课_第1个ARM裸板程序及引申 第001节_辅线1_硬件知识_LED原理图 当我们学习C语言的时候,我们会写个Hello程序.那当我们下ARM程序,也该有一个简单的程序引领我们入门, ...

  4. 查看numpy的类型

    查看一个变量的类型:type(img) 查看array中的数据值的类型:img.dtype 查看array的形状:img.shape

  5. BCB:UTF8Encode、AnsiToUtf8

    UTF8Encode: Call Utf8Encode to convert a Unicode string to UTF-8. WS is the Unicode string to conver ...

  6. mysq--索引模块

    问题:为什么要 使用索引? --->快速查询数据,但是仅仅这么回答,就是不专业的!!! 应该要分为数据量少的时候,不适用索引,走全表扫描的话,查询速率也是很快的 数据量大的话,使用索引,查询速率 ...

  7. <!DOCTYPE>声明

    定义和用法 <!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前. <!DOCTYPE> 声明不是 HTML 标签:它是指示 we ...

  8. linux简单常用命令

    除了yum命令,还有些简单的命令,在此记录一下,加深记忆: free -h 查询内存和交换分区. rpm -qa | grep libaio 查看当前环境是否安装某rpm软件包

  9. 03_4_this关键字

    03_4_this关键字 1. this关键字 在类的方法定义中使用的this关键字代表使用该方法的对象的引用. 当必须指出当前使用方法的对象是谁时要使用this. 有时使用this可以处理方法中成员 ...

  10. cocos2dx 单张图片加密

    cocos2dx 已经封装好读取加密的prv文件的方法,打开texturepacker,导入一张图片,在content protection中写入密钥,在texture format中选择prv格式 ...