【题解】牛客 Planting Trees⭐⭐⭐ 【单调队列】
发布日期:2021-06-29 16:20:39
浏览次数:2
分类:技术文章
本文共 1903 字,大约阅读时间需要 6 分钟。
Input
Output
For each case, print a single integer, the maximum number of cells in a valid rectangle.
Examples
2
2 0 1 2 2 1 3 1 1 3 2 2 3 1 3 2 1 输出 复制 1 4Hint
题意:
给出一个矩阵, 找到一个子矩阵满足矩阵内任意2元素差不超过M, 求子矩阵的最打的积
题解:
枚举上下边界, 同时枚举左边界, 通过单调队列可以确定最大满足题意的右边界
经验小结:
#includeusing namespace std;#define ms(x, n) memset(x,n,sizeof(x));typedef long long LL;const int INF = 1 << 30;const int MAXN = 510;int T, n, m, a[MAXN][MAXN];int cmax[MAXN], cmin[MAXN]; //每一列的最大值/最小值int qmin[MAXN], qmax[MAXN], head1, head2, tail1, tail2;int getAns(){ head1 = head2 = tail1 = tail2 = 0; int l = 1, ret = 0; for(int r = 1; r <= n; ++r){ //枚举右边界, 通过单调队列确定左边界 while(head1 < tail1 && cmin[qmin[tail1-1]] > cmin[r]) --tail1; qmin[tail1++] = r; while(head2 < tail2 && cmax[qmax[tail2-1]] < cmax[r]) --tail2; qmax[tail2++] = r; while(head1 < tail1 && head2 < tail2 && cmax[qmax[head2]]-cmin[qmin[head1]] > m){ l = min(qmax[head2], qmin[head1]) + 1; while(head1 < tail1 && qmin[head1] < l) ++head1; while(head2 < tail2 && qmax[head2] < l) ++head2; } ret = max(ret, r-l+1); } return ret;}int main() { scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); for(int i = 1; i <= n; ++i) for(int j = 1; j <= n; ++j) scanf("%d",&a[i][j]); int ans = 0; for(int i = 1; i <= n; ++i){ //i, j表示枚举上下界 for(int j = 1; j <= n; ++j) cmax[j] = -1, cmin[j] = INF; for(int j = i; j <= n; ++j){ for(int k = 1; k <= n; ++k){ cmax[k] = max(cmax[k], a[j][k]); cmin[k] = min(cmin[k], a[j][k]); } ans = max(ans, (j-i+1)*getAns()); } } printf("%d\n",ans); } return 0;}
转载地址:https://suprit.blog.csdn.net/article/details/102644456 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月07日 17时11分08秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Django实战---商城购物车的增删改、显示和合并购物车
2019-04-29
Django项目实战----添加支付宝支付
2019-04-29
DRF框架---前言(简单使用)
2019-04-29
字符串外面是b“ “的转换 -亲测有效
2019-04-29
单通道和多通道卷积
2019-04-29
npy文件和pkl文件的保存和读取
2021-07-02
买卖股票的最佳时机
2021-07-02
AUC粗浅理解笔记记录
2021-07-02
torch 模型运行时间与forward没对应的可能原因
2021-07-02
JavaScript 的addEventListener() 事件监听详解!
2021-07-02
上传图片到阿里云OSS和获取上传图片的url的详解 !
2021-07-02
Kafka为什么这么快?
2021-07-02
Java 生产者和消费者面试题
2019-04-29
生产者消费者问题
2019-04-29
本机电脑连接虚拟机redis失败解决方法
2019-04-29
DM365 应用层gpio控制
2019-04-29
linux i2c子系统abc
2019-04-29
CSS3 帧动画(Sprite,直译叫雪碧图)
2019-04-29
Java 父线程与子线程相互通信的方法
2019-04-29
Redis 六种淘汰策略和三种删除策略
2019-04-29