2019牛客暑期多校训练营(第三场)F - Planting Trees (枚举 + 单调队列)
题目链接
题意
有一个N2N^2N2的矩阵N∈(1,500)N \in (1,500)N∈(1,500),求一个最大的子矩阵使子矩阵中最大值和最小值差不超过M∈(0,105)M \in (0, 10^5)M∈(0,105),总的样例N3≤2.5×108N^3 \le 2.5 \times 10^8N3≤2.5×108
思路
枚举矩阵的上下界,然后枚举右端点,同时维护两个单调队列,最大值递增,最小值递减(这样能保证如果单调队列中头元素合法之后的都可以满足MMM的限制关系),这样就可以得到一个合法的最左边界。
复杂度:O(N3)O(N^3)O(N3)
#include <bits/stdc++.h>
const int maxn = 5e2 + 1;
const int inf = 0x3f3f3f3f;
using namespace std;
int a[maxn][maxn];
int up[maxn], down[maxn];
int q[maxn][2];
int main() {int T;cin >> T;while (T--) {int n, m;cin >> n >> m;for (int i = 1; i <= n; ++i) {for (int j = 1; j <= n; ++j) {cin >> a[i][j];}}int ans = 1;for (int i = 1; i <= n; ++i) { // 上界for (int j = 1; j <= n; ++j) {up[j] = -inf;down[j] = inf;}for (int j = i; j <= n; ++j) { // 下界for (int k = 1; k <= n; ++k) { // 更新列的最值up[k] = max(up[k], a[j][k]);down[k] = min(down[k], a[j][k]);}int l = 1, h0 = 0, h1 = 0, t0 = 1, t1 = 1;for (int r = 1; r <= n; ++r) { // 枚举右端点while (h0 >= t0 && down[q[h0][0]] >= down[r]) h0--; // 最大值递增while (h1 >= t1 && up[q[h1][1]] <= up[r]) h1--; // 最小值递减q[++h0][0] = q[++h1][1] = r;while (l <= r && up[q[t1][1]] - down[q[t0][0]] > m) { // 不满足m,左区间L++l++;while (t1 <= h1 && q[t1][1] < l) ++t1; // 更新队列头指针while (t0 <= h0 && q[t0][0] < l) ++t0;}ans = max(ans, (r-l+1) * (j-i+1));}}}cout << ans << endl;}return 0;
}
2019牛客暑期多校训练营(第三场)F - Planting Trees (枚举 + 单调队列)相关推荐
- 2019牛客暑期多校训练营 第三场 I Median
传送门 链接:https://ac.nowcoder.com/acm/contest/883/I 来源:牛客网 JSB has an integer sequence a1,a2,-,ana_1, a ...
- 【2019牛客暑期多校训练营(第二场) - H】Second Large Rectangle(单调栈,全1子矩阵变形)
题干: 链接:https://ac.nowcoder.com/acm/contest/882/H 来源:牛客网 题目描述 Given a N×MN \times MN×M binary matrix. ...
- 2019牛客暑期多校训练营(第一场)E-ABBA(dp)
链接:https://ac.nowcoder.com/acm/contest/881/E 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048 ...
- 2019牛客暑期多校训练营(第一场)
传送门 参考资料: [1]:官方题解(提取码:t050 ) [2]:标程(提取码:rvxr ) [3]:牛客题解汇总 A.Equivalent Prefixes(单调栈) •题意 定义两个数组 u,v ...
- 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)
链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...
- 【2019牛客暑期多校训练营(第二场)- E】MAZE(线段树优化dp,dp转矩阵乘法,线段树维护矩阵乘法)
题干: 链接:https://ac.nowcoder.com/acm/contest/882/E?&headNav=acm 来源:牛客网 Given a maze with N rows an ...
- 【2019牛客暑期多校训练营(第二场)- F】Partition problem(dfs,均摊时间优化)
题干: 链接:https://ac.nowcoder.com/acm/contest/882/F 来源:牛客网 Given 2N people, you need to assign each of ...
- 【2019牛客暑期多校训练营(第二场) - D】Kth Minimum Clique(bfs,tricks)
题干: 链接:https://ac.nowcoder.com/acm/contest/882/D 来源:牛客网 Given a vertex-weighted graph with N vertice ...
- 【2019牛客暑期多校训练营(第一场) - A】Equivalent Prefixes(单调栈,tricks)
题干: 链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Two arrays u and v each with m distinct elem ...
- 【2019牛客暑期多校训练营(第一场) - H】XOR(线性基,期望的线性性)
题干: 链接:https://ac.nowcoder.com/acm/contest/881/H 来源:牛客网 Bobo has a set A of n integers a1,a2,-,ana1, ...
最新文章
- java400状态,java – HttpURLConnection:如何读取400响应的有效负载
- ip route-static 命令的参数
- 你必须知道的容器监控 (1) Docker自带子命令与Weave Scope
- leetcode No.21 合并两个有序链表
- mac vscode 背景半透明_给 vscode 添加半透明毛玻璃效果
- 一些关于直播间人货场的打造干货,直播电商新手必须要了解人货场的概念
- c++——block_type_is_valid怎么解决
- Zynq7000硬件开发之总体硬件架构设计
- 12 个开源后台管理系统
- 在线vip全网音乐搜索下载源码
- Windows开启ssh服务配合 IOS 快捷指令完成骚操作
- saltstack(九)returner
- javaSE之多线程vip插队
- 七牛云配置怎么配CDN
- linux下常用拷贝命令
- 国内Android源码下载
- 分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践
- 非CS背景,如何快速上手机器学习?
- [点云补全]-Point Cloud Completion by Skip-attention Network with Hierarchical Folding
- Win7 64位下使用masm
热门文章
- hadoop中如何动态更新集群队列和容量
- php数组array_push()和array_pop()以及array_shift()函数
- How to create a jump server in AWS VPC
- 新年奉献MVC+EF(CodeFirst)+Easyui医药MIS系统
- 兴趣记忆法(1)顺口溜记忆
- redis 报 error NOTAUTH Authentication required
- 中班音乐计算机反思,中班歌曲《不再麻烦好妈妈》活动反思
- 【数据结构与算法】之深入解析“逆波兰表达式求值”的求解思路与算法示例
- OpenGL ES之Swift使用GLSL语言渲染图片的显示
- G6 图可视化引擎——入门教程——绘制 Tutorial 案例