当前位置: 首页 > news >正文

蓝桥杯刷题--python-32

4964. 子矩阵 - AcWing题库

from collections import deque

n, m, a, b = map(int, input().split())
mod = 998244353
nums = []
for _ in range(n):
    nums.append(list(map(int, input().split())))

rmin = [[0 for i in range(m)] for i in range(n)]
rmax = [[0 for i in range(m)] for i in range(n)]

def get_max(nums, r, n, k):
    max_q = deque()
    for i in range(n):
        if max_q and max_q[0] == i - k:
            max_q.popleft()
        while max_q and nums[max_q[-1]] <= nums[i]:
            max_q.pop()
        max_q.append(i)
        r[i] = nums[max_q[0]]

def get_min(nums, r, n, k):
    min_x = deque()
    for i in range(n):
        if min_x and min_x[0] == i - k:
            min_x.popleft()
        while min_x and nums[min_x[-1]] >= nums[i]:
            min_x.pop()
        min_x.append(i)
        r[i] = nums[min_x[0]]

# Preprocessing
for i in range(n):
    get_max(nums[i], rmax[i], m, b)
    get_min(nums[i], rmin[i], m, b)

res = 0
A = [0 for i in range(n)]
B = [0 for i in range(n)]
C = [0 for i in range(n)]

for i in range(b - 1, m):
    for j in range(n):
        A[j] = rmax[j][i]
    get_max(A, B, n, a)
    for j in range(n):
        A[j] = rmin[j][i]
    get_min(A, C, n, a)
    for j in range(a - 1, n):
        res = (res + B[j] * C[j]) % mod

print(res)

 AcWing 154. 滑动窗口(算法基础课) - AcWing

from collections import deque  
  
def sliding_window_max_min(nums, k):  
    # 函数返回两个列表,分别包含每个滑动窗口的最大值和最小值  
    max_values = []  
    min_values = []  
      
    # 双端队列,存储元素的索引  
    max_q = deque()  
    min_q = deque()  
      
    for i in range(len(nums)):  
        # 移除队列中超出当前窗口的元素  
        if max_q and max_q[0] == i - k:  
            max_q.popleft()  
        if min_q and min_q[0] == i - k:  
            min_q.popleft()  
          
        # 移除队列中所有小于当前元素的元素,以保持max_q的单调递减  
        while max_q and nums[max_q[-1]] <= nums[i]:  
            max_q.pop()  
        # 移除队列中所有大于当前元素的元素,以保持min_q的单调递增  
        while min_q and nums[min_q[-1]] >= nums[i]:  
            min_q.pop()  
          
        # 将当前元素的索引加入队列  
        max_q.append(i)  
        min_q.append(i)  
          
        # 当窗口大小达到k时,记录最大值和最小值  
        if i >= k - 1:  
            max_values.append(nums[max_q[0]])  
            min_values.append(nums[min_q[0]])  
      
    return max_values, min_values  
  
# 输入部分  
n, k = map(int, input().split())  
nums = list(map(int, input().split()))  
  
# 调用函数并输出结果  
max_values, min_values = sliding_window_max_min(nums, k)  
# 输出每个滑动窗口的最小值  
for val in min_values:  
    print(val, end=" ")  
print()  # 换行
  
# 输出每个滑动窗口的最大值  
for val in max_values:  
    print(val, end=" ")  
print()  # 换行  
  
 

相关文章:

  • SECFLOAT: Accurate Floating-Point meets Secure 2-Party Computation
  • 单页面应用部署到iis上可以正常打开,刷新就404
  • 基于深度学习的心律异常分类算法
  • SpringAOP+自定义注解实现限制接口访问频率,利用滑动窗口思想Redis的ZSet(附带整个Demo)
  • Github 2024-03-28 开源项目日报 Top10
  • scala-idea环境搭建及使用
  • 扩展wordpress回收站功能
  • SpringBoot SpringMVC (详解)
  • 《数据结构学习笔记---第三篇》---单链表具体实现
  • 提升JavaScript代码质量的最佳实践
  • 2024最新华为OD机试试题库全 -【幼儿园圆桶的取出顺序】- C卷
  • LNMP架构之mysql数据库实战
  • easyExcel大数据量导出oom
  • [BT]BUUCTF刷题第9天(3.27)
  • 整数的反转
  • #Java异常处理
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [case10]使用RSQL实现端到端的动态查询
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 10个最佳ES6特性 ES7与ES8的特性
  • 11111111
  • android图片蒙层
  • If…else
  • JavaScript 基础知识 - 入门篇(一)
  • Js基础——数据类型之Null和Undefined
  • Mysql数据库的条件查询语句
  • Node + FFmpeg 实现Canvas动画导出视频
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python十分钟制作属于你自己的个性logo
  • Python学习之路13-记分
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 从0到1:PostCSS 插件开发最佳实践
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 京东美团研发面经
  • 前端之Sass/Scss实战笔记
  • 前嗅ForeSpider教程:创建模板
  • 前嗅ForeSpider中数据浏览界面介绍
  • 如何设计一个比特币钱包服务
  • 微信小程序设置上一页数据
  • 微信小程序--------语音识别(前端自己也能玩)
  • 线上 python http server profile 实践
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 正则与JS中的正则
  • AI算硅基生命吗,为什么?
  • 组复制官方翻译九、Group Replication Technical Details
  • ​VRRP 虚拟路由冗余协议(华为)
  • #define,static,const,三种常量的区别
  • #预处理和函数的对比以及条件编译
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (SpringBoot)第七章:SpringBoot日志文件
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (办公)springboot配置aop处理请求.
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理