【算法刷题】Day21

1. 【模板】前缀和

在这里插入图片描述
在这里插入图片描述
原题链接


题干:

给定一个长度为 n 的数组
有 q 次查询,每次有两个参数 l 和 r
在这里插入图片描述


算法原理:

1. 暴力解法 (模拟)

这个时间复杂度是 O(n)

2. 前缀和(快速求出数组中某一个连续区间的和)

(1)预处理出来一个前缀和数组
dp[i] 表示:[1,i] 区间内所有元素的和

在这里插入图片描述
dp[i] = dp[i-1] + arr[i]

(2)使用前缀和数组

在这里插入图片描述
要求 [l,r] 中间的和
需要 dp[r] - dp[l-1]

细节问题:
为什么下标要从 1 开始技术
这是为了处理边界
因为如果是 0,-1就会数组异常
在这里插入图片描述


代码:

public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int q = in.nextInt();int[] arr = new int[n+1];long[] dp = new long[n+1];for(int i = 1; i <= n; i++) {arr[i] = in.nextInt();}for(int i = 1; i <= n; i++) {dp[i] = dp[i-1] + arr[i];}while(q > 0) {int l = in.nextInt();int r = in.nextInt();System.out.println(dp[r] - dp[l - 1]);q--;}}
}

在这里插入图片描述


2. 【模板】二维前缀和

在这里插入图片描述
在这里插入图片描述
原题链接


题干:

有一个 n*m 的矩阵
q 次查询 输入 x1 y1 x2 y2
输出以(x1,y1) 为左上角 和 (x2,y2)为右下角的子矩阵和
在这里插入图片描述


算法原理:

1. 暴力解法(模拟)

时间复杂度超过 O(n)

2. 前缀和

(1)预处理出来一个前缀和矩阵
在这里插入图片描述
dp[i][j] 表示:从[1,1] 位置,这段区间里面所有元素的和

在这里插入图片描述
dp[i][j] = A + B + C + D = A + B + A + C + D - A
dp[i][j] = dp[i-1][j] +dp[i][j-1] +arr[i][j] - dp[i-1][j-1]

(2)使用前缀和矩阵
在这里插入图片描述
[x1,y1] ~ [x2,y2] 就是求 D 这一块的值
D = A + B + C + D - (A + B) - (A + C) + A
D = dp[x2][y2] - dp[x2][y1 - 1] - dp[x1- 1][y2] + dp[x1-
1][y2 - 1]


代码:

public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int m = in.nextInt();int[][] arr = new int[n+1][m+1];long[][] dp = new long[n+1][m+1];int q = in.nextInt();for(int i = 1; i <= n; i++) {for(int j = 1; j <= m; j++){arr[i][j] = in.nextInt();}}for(int i = 1; i <= n; i++) {for(int j = 1; j <= m; j++){dp[i][j] = dp[i-1][j] + dp[i][j-1] + arr[i][j] - dp[i-1][j-1];}}while(q > 0) {int x1 = in.nextInt();int y1 = in.nextInt();int x2 = in.nextInt();int y2 = in.nextInt();System.out.println(dp[x2][y2] - dp[x1 - 1][y2] - dp[x2][y1 - 1] + dp[x1 - 1][y1 - 1]);q--;}}
}

在这里插入图片描述


3. 地下城游戏

在这里插入图片描述
在这里插入图片描述
原题链接


题干:


算法原理:

1. 状态表示:

2. 状态转移方程

3. 初始化

4. 填表顺序

5. 返回值


代码:

class Solution {public int calculateMinimumHP(int[][] d) {int m = d.length;int n = d[0].length;int[][] dp = new int[m+1][n+1];for(int i = 0; i <= n; i++){dp[m][i] = Integer.MAX_VALUE;}for(int i = 0; i <= m; i++){dp[i][n] = Integer.MAX_VALUE;}dp[m][n-1] = dp[m-1][n] = 1;for(int i = m - 1; i >= 0; i--) {for(int j = n - 1; j >= 0; j--) {dp[i][j] = Math.min(dp[i][j+1], dp[i+1][j]) - d[i][j];dp[i][j] = Math.max(dp[i][j], 1);}}return dp[0][0];}
}

在这里插入图片描述

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

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

相关文章

DOM是什么?

1、概述 &#xff08;1&#xff09;DOM代表文档对象模型&#xff0c;是 HTML 和 XML 文档的接口&#xff08;API&#xff09; &#xff08;2&#xff09;当浏览器第一次读取&#xff08;解析&#xff09;HTML文档时&#xff0c;会创建一个基于 HTML 文档的大对象&#xff0c;…

听GPT 讲Rust源代码--src/tools(15)

File: rust/src/tools/rust-analyzer/crates/mbe/src/token_map.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-analyzer/crates/mbe/src/token_map.rs文件的作用是实现了一个能够将输入的文本映射为标记的结构。具体来说&#xff0c;它定义和实现了几个结构体&#xff08…

数据库(三)超详细SQL语句入门 | SQL增删改查,重命名,字符操作,联合操作,聚合函数,嵌套子查询

文章目录 1 SQL表内类型2 SQL增删改语句2.1 创建表2.2 删除表2.3 表中添加属性2.4 添加新的元组信息2.5 删除表所有元组2.6 元组 3 查询语句4 重命名4.1 为什么用 5 字符操作5.1 寻找 6 生序降序7 联合操作7.1 并集Union7.2 交集 INTERSECT7.3 差集 EXCEPT7.4 对于空值补充 8 聚…

掀起全新的互联网直播风潮

随着科技的不断进步和智能手机的普及&#xff0c;无人直播作为一种全新的互联网直播方式&#xff0c;在近些年迅速崛起&#xff0c;并引起了广泛关注。本文将围绕手机无人直播展开探讨&#xff0c;探究其背后的原因以及对社会生活带来的影响。 首先&#xff0c;我们需要明确什…

[Angular] 笔记 5:ngClass

Angular 中的 ngClass 是什么&#xff1f; chatgpt 回答&#xff1a; 在Angular中&#xff0c;ngClass 是一个内置的指令&#xff0c;用于动态地添加或移除 HTML 元素的 CSS 类。它允许你根据条件设置一个或多个 CSS 类&#xff0c;可以是对象、数组或字符串。 使用方式&#…

一篇文章带你进阶CTF命令执行

以下的命令是为了方便以后做题时方便各位读者直接来这里复制使用&#xff0c;刚开始还请先看完这篇文章后才会懂得下面的命令 ?ceval($_GET[shy]);&shypassthru(cat flag.php); #逃逸过滤 ?cinclude%09$_GET[shy]?>&shyphp://filter/readconvert.base64-…

mysql:查看服务端没有睡眠的线程数量

使用命令show global status like Threads_running;可以查看服务端没有睡眠的线程数量。 例如&#xff1a;

玩转Spring状态机

说起Spring状态机&#xff0c;大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢&#xff1f;没错&#xff0c;Spring状态机就是状态模式的一种实现&#xff0c;在介绍Spring状态机之前&#xff0c;让我们来看看设计模式中的状态模式。 1. 状态模式 状态模式的定义如…

[Encryptedd@mailfence.com].faust 勒索病毒肆虐:如何恢复被加密的数据文件?

导言&#xff1a; 在网络安全的战场上&#xff0c;[backupsairmail.cc].faust [Deciphermailfence.com].faust[Encrypteddmailfence.com].faust[support2022cock.li].faust [tsai.shenmailfence.com].faust勒索病毒是一种极具破坏性的恶意软件。本文91数据恢复将深入介绍该病毒…

【krita】实时绘画 入门到精通 海报+电商+装修+人物

安装插件 首先打开comfyUI&#xff0c;再打开krita&#xff0c;出现问题提示&#xff0c; 打开 cd custom_nodes 输入命令 安装控件 git clone https://github.com/Acly/comfyui-tooling-nodes.git krita基础设置 设置模型 设置lora &#xff08;可设置lora强度 增加更多…

◢Django md5加密与中间件middleware

utils文件夹是重新建立的&#xff08;与migrations同级&#xff09;&#xff0c;该文件夹下主要存放工具&#xff0c;就像static文件夹下只存放静态文件一样 加密 在utils文件夹下建立encrypt.py文件 from django.conf import settings import hashlib def md5(data_string)…

Airtest1.2.7新增断言API介绍

1. 前言 1.2.7版本的Airtest中&#xff0c;一个很重要的功能是 新增了非常丰富的断言API &#xff0c;今天我们就来详细看一下Airtest都给我们提供了哪些断言语句。 2. 旧版Airtest提供的断言语句 先回顾下&#xff0c;旧版Airtest一直以来&#xff0c;都只给我们提供了2种断言…

Samtec信号完整性 这家连接器的设计很优秀!

【Samtec技术研发&#xff1a;信号完整性设计】 1. 什么是信号完整性&#xff1f; 信号完整性需要在整个系统和组件设计过程中加以考虑。与过去不同的是&#xff0c;互连不再是事后考虑的问题。随着上升时间的缩短和时钟频率的提高&#xff0c;曾经被认为是电气透明的连接器和…

阿里云经济型、通用算力型、计算型、通用型、内存型云服务器最新活动报价

阿里云作为国内领先的云计算服务提供商&#xff0c;提供了多种规格的云服务器供用户选择。为了满足不同用户的需求&#xff0c;阿里云推出了经济型、通用算力型、计算型、通用型和内存型等不同类型的云服务器。下面将详细介绍这些云服务器的最新活动报价。 一、阿里云特惠云服…

机器学习数据的清洗,转化,汇总及建模完整步骤(基于Titanic数据集)

目录 介绍&#xff1a; 一、数据 二、检查数据缺失 三、数据分析 四、数据清洗 五、数据类别转化 六、数据汇总和整理 七、建模 介绍&#xff1a; 线性回归是一种常用的机器学习方法&#xff0c;用于建立一个输入变量与输出变量之间线性关系的预测模型。线性回归的目标…

工业4.0|工业物联平台有多重要?IoTopo 深度解析

随着时代的发展&#xff0c;科学技术日新月异&#xff0c;人们进入了信息化的时代。现今&#xff0c;在物联网的逐渐普及下&#xff0c;物联网技术应用于工业中&#xff0c;也显得尤为重要&#xff1b;在工业网络和移动计算持续影响着制造业和工业环境的大环境中&#xff0c;这…

计算机毕业设计 基于SpringBoot的大学生平时成绩量化管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Python---TCP服务端程序开发

1. 开发 TCP 服务端程序开发步骤回顾 创建服务端端套接字对象绑定端口号设置监听等待接受客户端的连接请求接收数据发送数据关闭套接字 2. socket 类的介绍 导入 socket 模块import socket 创建服务端 socket 对象socket.socket(AddressFamily, Type) 参数说明: AddressF…

SpringMVC:执行原理详解、配置文件和注解开发实现 SpringMVC

文章目录 SpringMVC - 01一、概述二、SpringMVC 执行原理三、使用配置文件实现 SpringMVC四、使用注解开发实现 SpringMVC1. 步骤2. 实现 五、总结注意&#xff1a; SpringMVC - 01 一、概述 SpringMVC 官方文档&#xff1a;点此进入 有关 MVC 架构模式的内容见之前的笔记&a…

【AI数学】NeRF中的球面谐波函数(Spherical Harmonics)

球面谐波&#xff08;SH&#xff09;因为其良好的性质活跃在NeRF、Plenoxels、3DGS等显隐式场景表示的方法中。 问&#xff1a;球面谐波是什么&#xff1f; 答&#xff1a;一组基函数。可以理解为傅里叶分解的一种特殊形式&#xff0c;即“任何函数都可以用这组基的算术组合来近…