
2020牛客暑期多校第二场 F - Fake Maxpooling(dp/单调队列)
发布日期:2021-05-07 02:28:40
浏览次数:26
分类:精选文章
本文共 3102 字,大约阅读时间需要 10 分钟。
方法一:dp
这个做法还是很神奇的。当 k > 1 k>1 k>1时,考虑一个 k ∗ k k*k k∗k的子矩阵,我们将最大值假定为右下角的值,那么我们统计答案时,只需要统计矩阵 [ ( k , k ) , ( n , m ) ] [(k,k),(n,m)] [(k,k),(n,m)],而 k ∗ k k*k k∗k的子矩阵一定可以由若干个重叠的 2 ∗ 2 2*2 2∗2的矩阵构成,那么我们就只需要每次将左边和上面的最值传递到当前位置,这样最后的答案和最后的矩阵没有关系,只和统计开始的行列有关系
#include#include
方法二:单调队列
实际上对每一行和每一列来说,我们只需想办法求出每 k k k长度的一段的最大值。这个时候可能会想到线段树,ST表等等,但是内存显然不允许这么做,实际上这不就是滑动窗口的最值问题吗?那么使用单调队列,具体做法为:
首先操作每一行,将每个行中 1 − k 1-k 1−k的最值存到第 k k k个位置,然后操作每一列,将每列中 1 − k 1-k 1−k的最值存到第 k k k个位置,那么最后只需要查询每个 k ∗ k k*k k∗k矩阵的右下角求和
#include#include
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月03日 23时54分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Problem 330A - Cakeminator (思维)
2019-03-06
LeetCode75 颜色分类 (三路快排C++实现与应用)
2019-03-06
docker基础:容器生命周期管理命令
2019-03-06
C#开发BIMFACE系列35 服务端API之模型对比6:获取模型构建对比分类树
2019-03-06
C# 规范建议
2019-03-06
C语言+easyX图形库的推箱子实现
2019-03-06
反汇编-流程控制语句-2-循环控制语句分析
2019-03-06
调试vs2019代码的流程
2019-03-06
游戏外挂基础-概述
2019-03-06
脱壳与加壳-加壳-6-代码实现加密导入表
2019-03-06
Typora配置PicGo时,提示Failed to fetch
2019-03-06
ASP.NET CORE MVC 实现减号分隔(Kebab case)样式的 URL
2019-03-06
bcolz的新操作
2019-03-06
Linux的s、t、i、a权限(转)
2019-03-06
zmq的send
2019-03-06
C++中的delete加深认识
2021-05-09
windows消息机制(转)
2021-05-09
STL笔试面试题总结(干货)(转)
2021-05-09
XML 和 HTML 之间的差异
2021-05-09
阿里钉钉面试题
2021-05-09