蓝桥杯-子矩阵
"""
题目来源
https://www.lanqiao.cn/problems/3521/learning/?page=1&first_category_id=1&name=%E5%AD%90%E7%9F%A9%E9%98%B5
"""
import os
import sys
from collections import deque# 请在此输入您的代码
n, m, a, b = map(int, input().split())
datas = []
for i in range(n):datas.append(list(map(int, input().split())))# 记录所有子矩阵区间最大值
def max_value_queue(x):# 记录每一行所有区间长度为b的区间最大值ws = []for i in range(n):nums = datas[i]# w记录当前行所有区间长度为b的区间最大值w = []# 单调队列q = deque()for i, v in enumerate(nums):# 1.入队列while q and v >= nums[q[-1]]:q.pop()q.append(i)# 2.出队列# 单调队列的长度限制为b, 当队列元素个数大于b就需要将队首元素出队if i - q[0] + 1 >= b + 1:q.popleft()# 3.开始记录答案if i >= b - 1:# 单调队列降序, 队首元素为区间最大值w.append(nums[q[0]])ws.append(w)# 记录所有二维区间长度为a宽度为b的区间最大值ans = []# 将ws中的每一列作为一行tmps = [[ws[j][i] for j in range(n)] for i in range(len(ws[0]))]for i in range(len(ws[0])):nums = tmps[i]# w记录当前行所有区间长度为a的区间最大值w = []# 单调队列q = deque()for i, v in enumerate(nums):# 1.入队列while q and v >= nums[q[-1]]:q.pop()q.append(i)# 2.出队列# 单调队列的长度限制为a, 当队列元素个数大于a就需要将队首元素出队if i - q[0] + 1 >= a + 1:q.popleft()# 3.开始记录答案if i >= a - 1:# 单调队列降序, 队首元素为区间最大值w.append(nums[q[0]])ans.append(w)return ans# 记录所有矩阵最小值
def min_value_queue(x):# 记录每一行所有区间长度为b的区间最小值ws = []for i in range(n):nums = datas[i]# w记录当前行所有区间长度为b的区间最小值w = []# 单调队列q = deque()for i, v in enumerate(nums):# 1.入队列while q and v <= nums[q[-1]]:q.pop()q.append(i)# 2.出队列# 单调队列的长度限制为b, 当队列元素个数大于b就需要将队首元素出队if i - q[0] + 1 >= b + 1:q.popleft()# 3.开始记录答案if i >= b - 1:# 单调队列降序, 队首元素为区间最小值w.append(nums[q[0]])ws.append(w)# 记录所有二维区间长度为a宽度为b的区间最小值ans = []# 将ws中的每一列作为一行tmps = [[ws[j][i] for j in range(n)] for i in range(len(ws[0]))]for i in range(len(ws[0])):nums = tmps[i]# w记录当前行所有区间长度为a的区间最小值w = []# 单调队列q = deque()for i, v in enumerate(nums):# 1.入队列while q and v <= nums[q[-1]]:q.pop()q.append(i)# 2.出队列# 单调队列的长度限制为a, 当队列元素个数大于a就需要将队首元素出队if i - q[0] + 1 >= a + 1:q.popleft()# 3.开始记录答案if i >= a - 1:# 单调队列降序, 队首元素为区间最小值w.append(nums[q[0]])ans.append(w)return ans
maxs = max_value_queue(datas)
mins = min_value_queue(datas)answer = 0
for i in range(len(maxs)):for j in range(len(maxs[0])):answer = (answer + maxs[i][j] * mins[i][j]) % 998244353
print(answer)
解题思路:
这个就是二维单调队列的使用, 一维单调队列求区间最值比较简单, 可以去做一下滑动窗口最大值:
https://leetcode.cn/problems/sliding-window-maximum/, 那么二维区间最值怎么求呢?
首先从横向来看,可以用单调队列将每一行的区间最值求出来, 用数组w记录当前行的所有区间最值, 用ws将每一行的w都存储一起。接下来再来纵看,取已经求得的ws二维数组其中一列,求纵向的区间最值, 用t记录当前列的区间最值, 用ts记录每一列的t。最后ts就存储了所有的子矩阵的区间最值。
将区间最大值和区间最小值相乘求和求模就是最终答案, 代码看起来很长, 其实功能比较相似, 两个函数都是求区间最值, 一个是最大一个是最小。
相关文章:
蓝桥杯-子矩阵
""" 题目来源 https://www.lanqiao.cn/problems/3521/learning/?page1&first_category_id1&name%E5%AD%90%E7%9F%A9%E9%98%B5 """ import os import sys from collections import deque# 请在此输入您的代码 n, m, a, b map(int, inpu…...

Nginx 故障排查之斜杠(/) --(附 Nginx 常用命令)
问题场景: 项目中用到了多个子域名,测试环境通过子域名进行接口访问的时候返回 404 NOT_FOUND,经过排查测试后确定是 Nginx 配置问题,而导致事故的根本原因是运维在Nginx配置的时候少配置了一个斜杠(/)&am…...

【超全详解一文搞懂】Scala基础
目录 Scala 01 —— Scala基础一、搭建Scala开发环境安装Scala编译器在IDEA中进行scala编码 二、Scala简介与概述Scala简介Scala概述Scala代码规范 三、理解Scala变量与数据类型Scala的变量与常量Scala和Java变量的区别 Scala的数据类型 四、Scala的程序逻辑1.表达式2.运算符3.…...

16:00面试,16:06就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...

【CTFshow 】web 通关 1.0
🍬 博主介绍👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…...

babel起手式
Babel7 以下是各个 ECMAScript 版本引入的一些主要新语法和功能的汇总 ES5 / ECMAScript 5(2009年) 严格模式 "use strict"。JSON 对象。Array.prototype.forEach()、Array.prototype.map()、Array.prototype.filter()、Array.prototype.redu…...
AI大模型在医疗领域的应用案例:自然语言处理与医疗文本分析
随着人工智能技术的快速发展,AI大模型在自然语言处理、图像识别、语音识别等领域的应用越来越广泛。在医疗领域,AI大模型的应用正在深刻改变着医疗实践,为患者和医生带来前所未有的便利。近期AI医疗的概念也比较火热,本文将聚焦于…...
c语言常见错误
1.运算符“=”和“==”的误用 在if (“变量”==”常量”)表达式中最好写成 “常量”==“变量”的形式,否则容易造成逻辑判断不正确或者变量被错误赋值。 2.不要使用默认优先级,使用括号来保证自己的运算优先级! 3.网络序:所有设备和系统都是按照设备接收、发送数据的顺序…...
分别使用TCP/UDP实现互相实时发送消息,接收消息功能
什么是TCP? TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。它是互联网协议套件中的一部分,用于在网络上可靠地传输数据。TCP协议的主要特点包括: 面向连接:在TCP通信中,通信双方在通信之前必须先建立连接。连接建立后,数据传输完成后还需要显式…...

使用阿里CICD流水线打包Vue项目到阿里的docker镜像私仓,并自动部署到服务器启动服务
文章目录 使用阿里CICD流水线打包Vue项目到阿里的docker镜像私仓,并自动部署到服务器启动服务1、功能实现原理大家可以看我之前的两篇文章2、打包vue项目和打包咱们的Java项目过程差不多相同,大家可以看着上面的Java打包过程进行实验,下面是v…...

第十三届蓝桥杯物联网试题(省赛)
做后感悟: OLED显示函数需要一直显示,所以在主函数中要一直循环,为了确保这个检错功能error只输出一次,最好用中断串口进行接收数据,数据收完后自动进入中断函数中,做一次数据检查就好了,该开灯…...

将谷歌 Gemma AI大模型 部署安装本地教程(可离线使用)
CSDN 成就一亿技术人! 作者主页:点击! ————前言———— 谷歌 Gemma 是一个基于 Python 的图像分析工具,提供快速和准确的物体检测、定位、分类和风格迁移功能。它使用 TensorFlow Lite 模型,使它可以快速运行在…...
ChatGPT提示词大全:解锁AI对话
2024升级ChatGPTPLUS最快的方法 一、什么是ChatGPT提示词? ChatGPT提示词是用户在与ChatGPT进行对话时,提供的一些关键词或短语,用于引导ChatGPT的回答方向和内容。通过合理的提示词设置,用户可以更加精确地获取所需信息&#x…...

rust中字符串String常用方法和注意事项
Rust 中通常说的字符串指的是:String 和 &str(字符串字面值、或者叫字符串切片)这两种类型。str是rust中基础字符串类型,String是标准库里面的类型。Rust 中的字符串本质上是:Byte的集合(Vec<u8>) 基础类型…...

C语言:自定义类型(结构体)
目录 一、结构的特殊声明二、结构的自引用三、结构体内存对齐1.对齐规则2.为什么存在内存对齐(1)平台原因 (移植原因):(2)性能原因: 3.修改默认对齐数 四、结构体传参五、结构体实现位段1.什么是位段2.位段的内存分配3.位段的跨平台问题4.位段使用的注意…...

唯众物联网安装调试员实训平台物联网一体化教学实训室项目交付山东技师学院
近日,山东技师学院物联网安装调试员实训平台及物联网一体化教学实训室采购项目已顺利完成交付并投入使用,标志着学院在物联网技术教学与实践应用方面迈出了坚实的一步。 山东技师学院作为国内知名的技师培养摇篮,一直以来致力于为社会培养高…...

SqlServer期末复习(数据库原理及应用)持续更新中
一、SQL语句 1.1 SQL语句知识引入 1.DDL语言(数据定义语言)主要是进行定义/改变表的结构、数据类型、表之间的链接等操作,关键字CREATE、DROP、ALTER CREATE TABLE 表面( 列名1 数据类型, 列名2 数据类型, ) ALTER TABLE 表名&a…...

合辑下载 | MatrixOne 与 MySQL 全面对比
前言 MatrixOne是一款高度兼容MySQL语法的HTAP数据库,采用云原生化和存储、计算、事务分离的架构打造了HSTAP超融合数据引擎,实现单一数据库系统同时支持OLTP、OLAP、流计算等多种业务负载。基于MatrixOne高度兼容MySQL的定位,社区的小伙伴在…...

Ubuntu 22.04安装Python3.10.13
Ubuntu最好设置为英文,我之前用中文在make的test的时候,总是会有fail。 查了下有人怀疑是language的问题,保险起见都用英文,个人实践也证明改为英文就不报错了。 issue 44031: test_embed and test_tabnanny fails if the curre…...

2.4 如何运行Python程序
如何运行Python程序? Python是一种解释型的脚本编程语言,这样的编程语言一般支持两种代码运行方式: 1) 交互式编程 在命令行窗口中直接输入代码,按下回车键就可以运行代码,并立即看到输出结果;执行完一行…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...