Planting Trees
给定N*N矩阵,求子矩形满足里面最大元素最小元素之差不超过M
单调队列
枚举上边界,下边界,及右边界,
用两个单调队列,一个维护最大值,一个维护最小
求左边界

#include<bits/stdc++.h>
using namespace std;
int A[][];
#define sc(x) scanf("%d",&x);
int ma[];
int mi[];
int q1[];
int q2[];
int main()
{
int T,N,M;
sc(T);
while(T--){
sc(N);sc(M);
for(int i=;i<=N;i++){
for(int j=;j<=N;j++){
sc(A[i][j]);
}
}
int ans=;
for(int i=;i<=N;i++){///上
for(int j=;j<=N;j++)ma[j]=,mi[j]=1e5+;
for(int j=i;j<=N;j++){///下
for(int k=;k<=N;k++){///列
ma[k]=max(ma[k],A[j][k]);
mi[k]=min(mi[k],A[j][k]);
} int l1=,l2=,r1=,r2=;
for(int k=,p=;k<=N;k++){
for(;l1<r1&&ma[q1[r1-]]<ma[k];)r1--;
for(;l2<r2&&mi[q2[r2-]]>mi[k];)r2--;
q1[r1++]=k,q2[r2++]=k;
for(;l1<r1&&l2<r2&&ma[q1[l1]]-mi[q2[l2]]>M;){
if(q1[l1]<q2[l2])p=q1[l1++];
else p=q2[l2++];
}//p位置不取
ans=max(ans,(j-i+)*(k-p));
}
}
}
cout<<ans<<'\n';
}
}
Planting Trees的更多相关文章
- csuoj 1390: Planting Trees
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1390 1390: Planting Trees Time Limit: 1 Sec Memory ...
- 2019牛客暑期多校训练营(第三场)F Planting Trees 单调队列
F Planting Trees 题目链接 https://ac.nowcoder.com/acm/contest/883/F 题目描述 The semester is finally over an ...
- 牛客多校第三场 F Planting Trees
牛客多校第三场 F Planting Trees 题意: 求矩阵内最大值减最小值大于k的最大子矩阵的面积 题解: 矩阵压缩的技巧 因为对于我们有用的信息只有这个矩阵内的最大值和最小值 所以我们可以将一 ...
- 牛客多校第三场F Planting Trees 单调栈
Planting Trees 题意 给出一个矩阵,求最大矩阵面积满足该矩阵中任2元素的绝对值之差小于等于M T<1000) (n<500)但是题目明示单组(n*3)可过 分析 又是矩阵问题 ...
- 2019年牛客多校第三场 F题Planting Trees(单调队列)
题目链接 传送门 题意 给你一个\(n\times n\)的矩形,要你求出一个面积最大的矩形使得这个矩形内的最大值减最小值小于等于\(M\). 思路 单调队列滚动窗口. 比赛的时候我的想法是先枚举长度 ...
- 2019牛客多校第三场 F.Planting Trees
题目链接 题目链接 题解 题面上面很明显的提示了需要严格\(O(n^3)\)的算法. 先考虑一个过不了的做法,枚举右下角的\((x,y)\),然后二分矩形面积,枚举其中一边,则复杂度是\(O(n^3 ...
- 2019牛客暑期多校训练营(第三场)- F Planting Trees
题目链接:https://ac.nowcoder.com/acm/contest/883/F 题意:给定n×n的矩阵,求最大子矩阵使得子矩阵中最大值和最小值的差值<=M. 思路:先看数据大小,注 ...
- 2019 牛客暑期多校 第三场 F Planting Trees (单调队列+尺取)
题目:https://ac.nowcoder.com/acm/contest/883/F 题意:求一个矩阵最大面积,这个矩阵的要求是矩阵内最小值与最大值差值<=m 思路:首先我们仔细观察范围,我 ...
- 2019HDU多校训练第三场 Planting Trees 暴力 + 单调队列优化
题意:有一个n * n的网格,每个网格中间有一颗树,你知道每棵树的高,你可以选择一个矩形区域把里面的树都围起来,但是矩形区域里面任意两棵树的高度差的绝对值不超过m,问这个矩形的最大面积是多少? 思路: ...
随机推荐
- android app开发中的常用组件
1 Activity 1.1 Activity的启动 第一,android manifest中指定的主activity,点击app的icon启动进入. 第二,使用intent,在另外一个activit ...
- iScroll使用参考
分享是传播.学习知识最好的方法 以下这篇文章是iScroll.js官网的中文翻译,尽管自己英文不好,但觉得原作者们翻译的这个资料还是可以的,基本用法介绍清楚了.如果你英文比较好的话,可以看看官网的资料 ...
- 【狗屁不通文章生成器】代码分析 (javaScript)
这几天在论坛上看到了一个很有意思的项目,一个生成"狗屁不通"的文章的程序.经过本人确定其的确是"狗屁不通"后,随后又好奇其实现,于是在其[GitHub]项目里( ...
- C++中操作符重载的概念
1,下面的复数解决方案是否可行? 1,代码示例: class Comples { public: int a; int b; }; int main() { Complex c1 = {, }; Co ...
- Coding 地址
Coding 连接 https://dev.tencent.com/u/leexi
- js分页加载数据
<script type="text/javascript"> $(function(){ $.ajax({ type: "post", dataT ...
- Yii2.0 limit(1)与one()
ActiveRecord中的limit(1)与one()的区别 (new \yii\db\Query())->from('user')->limit(1)->one() public ...
- HBase Shell 的常用操作总结
1,创建表:create 't1','f1','f2','f3' #-------t1是表名,f1,f2,f3是列族名 2,查看所有的表:list 3, ...
- django的模板的继承与导入
1.模板继承 母版中需要继承的地方: {% block content %} {% endblock %} 对应的子版中文件最开头写: {% extends 'head_demo.html' %} 然 ...
- Android数据库使用指南(上)
前言Android上的数据库是sqlite,虽然这个数据库是轻量级的,但是储存的东西可不少,sqlite官方表示理论存储容量为140TB,目前应该没有那么大容量的手机,存储能力太强了. 关于如何使用S ...