【Luogu】P1169棋盘制作(单调栈)
唉……这种题放在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棋盘制作(单调栈)的更多相关文章
- bzoj 1057: [ZJOI2007]棋盘制作 单调栈
题目链接 1057: [ZJOI2007]棋盘制作 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 2027 Solved: 1019[Submit] ...
- [ZJOI2007]棋盘制作 (单调栈)
[ZJOI2007]棋盘制作 题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8 \times 88×8大小的黑白相间 ...
- BZOJ1057[ZJOI2007]棋盘制作 [单调栈]
题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴阳. 而我们的 ...
- [ZJOI2007]棋盘制作 (单调栈,动态规划)
题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个 8 \times 88×8 大小的黑白相间的方阵,对应八八六十四卦, ...
- luogu1169 棋盘制作 (单调栈)
先预处理出来从每个位置 以0开始 往右交替最多能放多少格 然后就相当于对每一列做HISTOGRA #include<bits/stdc++.h> #define pa pair<in ...
- [P1169] 棋盘制作 &悬线法学习笔记
学习笔记 悬线法 最大子矩阵问题: 在一个给定的矩形中有一些障碍点,找出内部不包含障碍点的,边与整个矩形平行或重合的最大子矩形. 极大子矩型:无法再向外拓展的有效子矩形 最大子矩型:最大的一个有效子矩 ...
- luogu 1169 棋盘制作(单调栈/悬线)
luogu 1169 棋盘制作(单调栈/悬线) 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应 ...
- luogu 3467 [POI2008]PLA-Postering 单调栈
题目描述: Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每行给出矩形的 ...
- 洛谷P1169 棋盘制作(悬线法)
题目链接:https://www.luogu.org/problemnew/show/P1169 #include<bits/stdc++.h> #define fi first #def ...
随机推荐
- 【Python图像特征的音乐序列生成】GitHub已经有人将mingus改到了Python3版本
https://github.com/bspaans/python-mingus/issues/45 注意此时的安装方法应该是: git clone https://github.com/edudob ...
- ASUS主板 Type C 接口无效问题
修改UEFI设置,把 USB TYPE C POWER SWITCH 改成启用
- MyEclipse7.0 M1下载和注册码
首先介绍下,这款MyEclipse7.0 M1已经内置了Eclipse3.4,所以无需再去下载. 1.下载地址: http://downloads.myeclipseide.com/downloads ...
- xcdatamodel的实质
修改后缀名为zip或者其它,可以查看到xcdatamodel是一个描述文件 <?xml version="1.0" encoding="UTF-8" st ...
- [学习总结] python语言学习总结 (一)
还是不多说话了.. 1.eval函数 用法:eval(expression, globals=None, locals=None) 解释:将字符串str当成有效的表达式来求值并返回计算结果. 就是可以 ...
- Sequence II
6990: Sequence II 时间限制: 3 Sec 内存限制: 128 MB提交: 206 解决: 23[提交][状态][讨论版][命题人:admin] 题目描述 We define an ...
- argsort argmax
argsort是将array排序并返回坐标值,默认是从小到大,添加负号-变成从大到小.这个函数并不改变原来的array. >>> a = np.array([1,5,3,1]) &g ...
- 用fmt标签对EL表达式取整
本篇文章转载自:https://blog.csdn.net/u013400939/article/details/47948541 一般来说我们是无法实现EL表达式取整的.对于EL表达式的除法而言,他 ...
- 01_8_sql主键生成方式
01_8_sql主键生成方式 1. 配置映射文件 <insert id="insertStudentBySequence" parameterClass="Stud ...
- CocoaPods在OS X Yosemite上突然不能用了的解决办法
最近开发的时候发现自己的CocoaPods不能使用了! 根据报的错误上网搜寻answer,于是搜到了解决办法 在 OS X Yosemite 报这样的错: [MT] DVTAssertions: AS ...