算法导论(动态规划)——简单多状态
算法思路(17.16)
-
状态表示:
在处理线性动态规划问题时,我们可以通过“经验 + 题目要求”来定义状态表示。通常有两种选择:- 以某个位置为结尾的情况;
- 以某个位置为起点的情况。
本题中,我们选择更常用的方式,以某个位置为结尾,并结合题目要求,定义状态表示如下:
dp[i] 表示选择到位置 i 时的最长预约时长。但是在处理位置 ii 时,我们会面临“选择”或“不选择”的两种决策,因此需要将状态细分为:
- f[i] 表示选择到 i 位置时,nums[i] 必选,此时的最长预约时长。f[i] 表示选择到 i 位置时,nums[i] 必选,此时的最长预约时长。
- g[i] 表示选择到 i 位置时,nums[i] 不选,此时的最长预约时长。g[i] 表示选择到 i 位置时,nums[i] 不选,此时的最长预约时长。
-
状态转移方程:
由于状态表示涉及两个部分,我们分别分析这两个状态的转移关系:-
对于 f[i]:
- 如果选择 nums[i] 必选,我们只需考虑位置 i−1 在不选择时的最长预约时长,因此:
-
对于 g[i]:
- 如果 nums[i] 不选,则 i−1 位置可以选择或不选择,因此:
-
-
初始化:
f[0]=nums[0],g[0]=0
本题的初始化相对简单,无需添加辅助节点。只需进行以下初始化即可: -
填表顺序:
根据状态转移方程,填表顺序为“从左往右”,同时填充两个状态表。 -
返回值:
max(f[n−1],g[n−1])
根据状态表示,最终返回的结果为:这代表在处理到最后一个位置时的最长预约时长。
C++:
class Solution {
public:int massage(vector<int>& nums) {// 1. 创建⼀个 dp 表 // 2. 初始化 // 3. 填表 // 4. 返回值 int n = nums.size();if(n == 0) return 0; // 处理边界条件 vector<int> f(n);auto g = f;f[0] = nums[0];for(int i = 1; i < n; i++){f[i] = g[i - 1] + nums[i];g[i] = max(f[i - 1], g[i - 1]);}return max(f[n - 1], g[n - 1]);}
};
Java:
class Solution
{public int massage(int[] nums) {// 1. 创建 dp 表 // 2. 初始化 // 3. 填表 // 4. 返回值 int n = nums.length;if(n == 0) return 0; // 处理边界条件 int[] f = new int[n];int[] g = new int[n];f[0] = nums[0];for(int i = 1; i < n; i++){f[i] = g[i - 1] + nums[i];g[i] = Math.max(f[i - 1], g[i - 1]);}return Math.max(g[n - 1], f[n - 1]);}
}
算法思路(213)
本问题是“按摩师”问题的变种,具体而言,它涉及一个“环形”模式,而不是单排模式。由于首尾房屋相连,这使得问题的处理方式有所不同。但我们可以将“环形”问题转化为两个单排问题的求解:
-
偷第一个房屋:在这种情况下,最高金额为 x。此时由于偷了第一个房屋,不能再偷最后一个房屋,因此只需在区间 [0,n−2] 内进行偷窃。
-
不偷第一个房屋:在这种情况下,最高金额为 y。此时可以偷最后一个房屋,因此只需在区间 [1,n−1] 内进行偷窃。
-
最终结果:通过计算上述两种情况的最大值,我们可以得到环形问题的最终结果。也就是说,问题已有效转化为求解两个单排问题的最大值:
结果=max(x,y)
C++:
class Solution
{
public:int rob(vector<int>& nums){int n = nums.size();// 两种情况下的最⼤值 return max(nums[0] + rob1(nums, 2, n - 2), rob1(nums, 1, n - 1));}int rob1(vector<int>& nums, int left, int right){if(left > right) return 0;// 1. 创建 dp 表 // 2. 初始化 // 3. 填表 // 4. 返回结果 int n = nums.size();vector<int> f(n);auto g = f;f[left] = nums[left]; // 初始化 for(int i = left + 1; i <= right; i++){f[i] = g[i - 1] + nums[i];g[i] = max(f[i - 1], g[i - 1]);}return max(f[right], g[right]);}
};
Java:
class Solution
{public int rob(int[] nums) {int n = nums.length;return Math.max(nums[0] + rob1(nums, 2, n - 2), rob1(nums, 1, n - 1));}public int rob1(int[] nums, int left, int right){if(left > right) return 0;// 1. 创建 dp 表 // 2. 初始化 // 3. 填表 // 4. 返回 int n = nums.length;int[] f= new int[n];int[] g= new int[n];f[left] = nums[left];for(int i = left + 1; i <= right; i++){f[i] = g[i - 1] + nums[i];g[i] = Math.max(g[i - 1], f[i - 1]);}return Math.max(f[right], g[right]);}
}
算法思路(740)
本题实质上是“按摩师”问题的变种。注意到题目描述,当选择某个数字 x 时,x−1 和 x+1 的数值不能被选择。这与“按摩师”问题中的逻辑相似:选择位置 i 的金额后,不能选择位置 i−1 和 i+1 的金额。
因此,我们可以通过以下步骤解决这个问题:
-
创建哈希数组:
- 根据题目中的数据范围,创建一个大小为 10001 的哈希数组 hash。
- 遍历数组 nums,将数组中每个元素 x 的值累加到哈希数组的对应位置 hash[x] 上。有了这个哈希数组,我们能将相同金额的数值进行聚合。
-
应用按摩师策略
C++:
class Solution {
public:int deleteAndEarn(vector<int>& nums) {const int N = 10001;// 1. 预处理 int arr[N] = { 0 };for(auto x : nums) arr[x] += x;// 2. 在 arr 数组上,做⼀次 “打家劫舍” 问题 // 创建 dp 表 vector<int> f(N);auto g = f;// 填表 for(int i = 1; i < N; i++){f[i] = g[i - 1] + arr[i];g[i] = max(f[i - 1], g[i - 1]);}// 返回结果 return max(f[N - 1], g[N - 1]);}
};
Java:
class Solution
{public int deleteAndEarn(int[] nums) {int n = 10001;// 1. 预处理 int[] arr = new int[n];for(int x : nums) arr[x] += x;// 2. dp// 创建 dp 表 int[] f = new int[n];int[] g = new int[n];// 初始化 f[0] = arr[0];// 填表 for(int i = 1; i < n; i++){f[i] = g[i - 1] + arr[i];g[i] = Math.max(f[i - 1], g[i - 1]);}// 返回值 return Math.max(f[n - 1], g[n - 1]);}
}
算法思路(091)
-
状态表示:
在处理线性动态规划问题时,我们可以通过“经验 + 题目要求”来定义状态表。通常有两种选择:- 以某个位置为结尾;
- 以某个位置为起点。
本题中,我们选择以某个位置为结尾的方法,并结合题目要求,定义状态表示为:
- dp[i][0]:表示到达位置 ii 时,如果最后一个位置刷上“红色”,所需的最小花费;
- dp[i][1]:表示到达位置 ii 时,如果最后一个位置刷上“蓝色”,所需的最小花费;
- dp[i][2]:表示到达位置 ii 时,如果最后一个位置刷上“绿色”,所需的最小花费。
-
状态转移方程:
由于状态表示定义了三个状态,我们需要针对每个状态推导其转移方程:-
对于 dp[i][0](最后一个位置刷红色):
dp[i][0]=min(dp[i−1][1],dp[i−1][2])+costs[i−1][0]这里,我们需要获取位置 i−1i−1 刷蓝色或绿色情况下的最小花费,然后加上当前位置的红色刷费。
-
对于 dp[i][1](最后一个位置刷蓝色):
dp[i][1]=min(dp[i−1][0],dp[i−1][2])+costs[i−1][1] -
对于 dp[i][2](最后一个位置刷绿色):
dp[i][2]=min(dp[i−1][0],dp[i−1][1])+costs[i−1][2]
-
-
初始化:
设定一个辅助节点来帮助我们初始化工作。当我们添加一个辅助节点时,需确保两个关键点:- 辅助节点内的值:应保证能正确初始化后续状态表;
- 下标映射关系:在本题中,我们添加的辅助节点默认设置为 0。
-
填表顺序:
根据状态转移方程,应按顺序“从左往右”填充这三个状态表。 -
返回值:
min(dp[n][0],dp[n][1],dp[n][2])
最终,我们需要返回在所有颜色情况下的最小花费:这里 nn 表示房屋的数量,确保能够在最后一个位置中选择刷上任一颜色的最小花费。
C++:
class Solution {
public:int minCost(vector<vector<int>>& costs) {// dp[i][j] 第i个房⼦刷成第j种颜⾊最⼩花费 int n = costs.size();vector<vector<int>> dp(n + 1, vector<int>(3));for (int i = 1; i <= n; i++) {dp[i][0] = min(dp[i - 1][1], dp[i - 1][2]) + costs[i - 1][0];dp[i][1] = min(dp[i - 1][0], dp[i - 1][2]) + costs[i - 1][1];dp[i][2] = min(dp[i - 1][1], dp[i - 1][0]) + costs[i - 1][2];}return min(dp[n][0], min(dp[n][1], dp[n][2]));}
};
Java:
class Solution
{public int minCost(int[][] costs) {// 1. 创建 dp 表 // 2. 初始化 // 3. 填表 // 4. 返回结果 int n = costs.length;int[][] dp = new int[n + 1][3];for(int i = 1; i <= n; i++){dp[i][0] = Math.min(dp[i - 1][1], dp[i - 1][2]) + costs[i - 1][0];dp[i][1] = Math.min(dp[i - 1][0], dp[i - 1][2]) + costs[i - 1][1];dp[i][2] = Math.min(dp[i - 1][0], dp[i - 1][1]) + costs[i - 1][2];}return Math.min(dp[n][0], Math.min(dp[n][1], dp[n][2]));}
}
算法思路(309)
-
状态表示:
在处理线性动态规划问题时,我们可以通过“经验 + 题目要求”来定义状态表。针对本问题,有三种状态:- 买入状态;
- 可交易状态;
- 冷冻期状态。
因此,我们可以定义一个三维状态数组 dpdp:
- dp[i][0]:表示在第 ii 天结束后处于“买入”状态时的最大利润;
- dp[i][1]:表示在第 ii 天结束后处于“可交易”状态时的最大利润;
- dp[i][2]:表示在第 ii 天结束后处于“冷冻期”状态时的最大利润。
-
状态转移方程:
我们需要根据规则推导状态转移方程:-
对于 dp[i][0](买入状态):
- 可以由之前持有股票(保持不变)和今天购入股票(从可交易状态转变)得到:
其中,dp[i−1][1]−prices[i] 表示在可交易状态下买入股票的利润计算。
-
对于 dp[i][1] (可交易状态):
- 由之前在冷冻期不执行任何交易(停滞)和之前处于可交易状态不执行任何交易得到:
-
对于 dp[i][2] (冷冻期状态):
- 由之前的持有状态卖出股票进入冷冻期得到:
-
-
初始化:
第一行的状态初始化较为关键,因为后续状态均依赖于第一行值:- dp[0][0]:为了处于买入状态,必须在第一天买入股票,故:
- dp[0][1]:什么也不做的情况下,利润为0:
- dp[0][2]:进入冷冻期时手中没有股票,利润为0:
-
填表顺序:
根据状态转移方程,依次从第一天填充到最后一天,三个状态表需要一起更新,方向为“从左到右”。 -
返回值:
max(dp[n−1][1],dp[n−1][2])
最后,我们需要返回在可交易状态或冷冻期状态下的最大利润值:
C++:
class Solution
{
public:int maxProfit(vector<int>& prices) {// 1. 创建 dp 表 // 2. 初始化 // 3. 填表 // 4. 返回结果 int n = prices.size();vector<vector<int>> dp(n, vector<int>(3));dp[0][0] = -prices[0];for(int i = 1; i < n; i++){dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i]);dp[i][1] = max(dp[i - 1][1], dp[i - 1][2]);dp[i][2] = dp[i - 1][0] + prices[i];}return max(dp[n - 1][1], dp[n - 1][2]);}
};
Java:
class Solution
{public int maxProfit(int[] prices) {// 1. 创建 dp 表 // 2. 初始化 // 3. 填表 // 4. 返回值 int n = prices.length;int[][] dp = new int[n][3];dp[0][0] = -prices[0];for(int i = 1; i < n; i++){dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] - prices[i]);dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][2]);dp[i][2] = dp[i - 1][0] + prices[i];}return Math.max(dp[n - 1][1], dp[n - 1][2]);}
}
相关文章:
算法导论(动态规划)——简单多状态
算法思路(17.16) 状态表示: 在处理线性动态规划问题时,我们可以通过“经验 题目要求”来定义状态表示。通常有两种选择: 以某个位置为结尾的情况;以某个位置为起点的情况。 本题中,我们选择更常…...
主成分分析(PCA)学习介绍及其高阶应用,金融风险分析
前言 主成分分析(Principal Component Analysis, PCA)是统计学中一种重要的降维技术。它通过寻找数据中各特征之间的线性关系,来降低数据的维度,同时保留数据中的主要信息。PCA在机器学习、信号处理、图像处理等领域广泛应用&…...
利用 SSRF 和 Redis 未授权访问进行内网渗透
目录 环境搭建 编辑 发现内网存活主机 编辑 扫描内网端口 编辑 利用 Redis 未授权访问进行 Webshell 写入 步骤1:生成 payload 方式1:使用python生成 payload 方式二:使用 Gopher 工具 步骤 2:写入 Webshell…...
计算机网络和因特网
目录 1、什么是Internet? 1.1定义 1.2具体构成描述 2、什么是协议? 2.1 服务描述 2.2 网络协议 3、网络边缘 3.1 定义与组成 3.2 模式 3.3服务 4、接入网、物理媒介 4.1、宽带有线接入网技术 4.2、宽带无线接入网技术 5、网络核心…...
1.oracle修改配置文件
1.找到oracle的安装路径 D:\app\baozi\product\11.2.0\dbhome_1\NETWORK\ADMIN ,修改下面的两个文件。如果提示没有权限,可以先把这两个文件复制到桌面,修改完后,在复制回来。 2.查看自己电脑的主机名, 右击 - 此电脑 …...
算法篇-------------双指针法
温馨提示:由于c语言在编程上更有优势,更加简洁,本文代码均为c代码,其他语言也可以 做,思想是不变的! 1.应用场景 涉及到对数组的操作的题目,可以考虑双指针方法解决 2.基…...
Java关于包和final
什么是包? 包就是文件夹。用来管理等各种不同功能的java类,方便后期代码维护 包名的规则:公司域名反写包的作用,需要全部英文小写,见名知意。例如:com.pdsu.domain package com.pdsu.demain;public class…...
2025年华为HCIP题库分享
1101、 【拖拽题】OPSF邻接关系建立的过程中需要使用不同的报文,那么请分别将以下各个状态和该状态使用的报文联系起来。 答题格式为:11 22 33 43 正确答案:【12】【21】【24】【33】 解析: 建立邻居关系 RouterA的一个连接到广…...
49. 字母异位词分组
leetcode Hot 100系列 文章目录 一、核心操作二、外层配合操作三、核心模式代码总结 一、核心操作 先把每一个词都排序,拍完之后相同的就是字母异位词使用map,排序完的作为key,一个string数组作为value对于每一个词,排完序之后将…...
python 语法篇(一)
目录 1 正则匹配注意点11.1 正则匹配字符串写法1.2 创建re函数(1)re.search()--搜索第一个匹配项(2)re.match() - 从字符串开头匹配(3)re.findall() - 返回所有匹配项的列表(4)re.fi…...
机器学习ML极简指南
机器学习是现代AI的核心,从推荐系统到自动驾驶,无处不在。但每个智能应用背后,都离不开那些奠基性的模型。本文用最简练的方式拆解核心机器学习模型,助你面试时对答如流,稳如老G。 线性回归 线性回归试图通过"最…...
爬虫:网络请求(通信)步骤,http和https协议
电脑(浏览器):www.baidu.com——url DNS服务器:IP地址标注服务器——1.1.38 DNS服务器返回IP地址给浏览器 浏览器拿到IP地址去访问服务器,返回响应 服务器返回给响应数据:html/css/js/jpg... html:文本 cs…...
【杂谈】-大型语言模型对具身人工智能发展的推动与挑战
大型语言模型对具身人工智能发展的推动与挑战 文章目录 大型语言模型对具身人工智能发展的推动与挑战1. 具身人工智能(Embodied AI)的内涵解析2. 大型语言模型的功能与作用3. 最新发展趋势4. 面临的挑战与考量因素5. 总结与展望 多年来,研发能…...
解决Beats Solo Buds 无法自动切换音频到耳机的问题
一、核心问题定位 现象矛盾点: Beats 耳机能连接但需手动切换音频 AirPods 可自动切换 → 排除 iOS 系统级故障 问题可能源于 Beats 固件兼容性 或 音频路由逻辑冲突 关键差异: 设备 芯片类型 自动切换协议支持 固件更新方式 AirPods 二代 H1芯片 原…...
MySQL基本查询
一.create 1.1 单行数据 全列插入 1.2 多行数据 指定列插入 1.3插入否则更新 1.4替换 二.Retrieve 2.1.SELECT列 2.1.1全列查询 2.1.2指定列查询 2.1.3查询字段为表达式 2.1.4 为查询结果指定别名 2.1.5结果去重 2.2WHERE 条件 2.2.1比较运算符 2.2.3逻辑运算符…...
面基:为什么不推荐用UUID作为主键
推荐回答结构: 技术理论层面分析 实际项目中的教训 优化改进过程 总结提炼认知 阐述回答 在阐述回答时,你可以从 UUID 本身特性带来的问题,以及在实际工作中遇到的具体场景和优化过程等方面展开,下面从这一思路,给…...
oracle 常用函数的应用
在使用开发中会经常遇到数据类型转换、显示系统时间等情况,需要使用函数来实现。通过函数来实现业务需求会非常的省事便捷,函数可以用在适当的dml语句和查询语句中。 Oracle 数据库中主要使用两种类型的函数: (1)单行函数:对每一个…...
ubuntu的ubuntu--vg-ubuntu--lv磁盘扩容
在我们安装ubuntu时,如果选择的是自动分区,就会按照逻辑卷的形式来分区,并且只分配100G其余的并不会被分配,这对我们大多数情况来说都是不合理的,所以,如何扩充呢 下面以一个小的案例来说明如何扩充 问题…...
鬼泣:升龙系统
文章目录 0.升龙系统:升龙斩使敌人浮空升龙斩使敌人浮空:设置flying状态,不会落下 1.升龙斩:S 攻击S按下calculate directionin range warp:前提是根运动打开蒙太奇拔刀收刀canCombo:接轻攻击连击 2. A.向…...
UI产品经理基础(四):用价值链视角来分析项目需求
用价值链视角来分析项目需求 作为产品经理,从价值链视角分析项目需求,能够更精准地定位价值创造的关键环节,确保资源投入与用户需求、商业目标深度匹配。以下是系统化的方法论与落地步骤,结合案例说明如何实现需求分析与用户认可…...
ThinkPHP的“get\post\put\delete“请求
首先了解一下这四个请求的区别 1.GET 请求 用途:获取资源(只读操作,不修改服务器数据)。 特点: 参数通过 URL 的 查询字符串(Query String) 传递(例如 /book?id1)。 数…...
目标检测的训练策略
在目标检测竞赛中,训练策略的优化是提高模型性能的关键。常用的训练策略包括数据预处理、数据增强、超参数调节、损失函数设计、正负样本采样、模型初始化和训练技巧等。以下是一些常见的训练策略: 1. 数据预处理与数据增强 数据归一化:对输…...
【JavaSE】小练习 —— 图书管理系统
【JavaSE】JavaSE小练习 —— 图书管理系统 一、系统功能二、涉及的知识点三、业务逻辑四、代码实现4.1 book 包4.2 user 包4.3 Main 类4.4 完善管理员菜单和普通用户菜单4.5 接着4.4的管理员菜单和普通用户菜单,进行操作选择(1查找图书、2借阅图书.....…...
代码随想录Day29
Day29 动态规划part02 LeetCode 62.不同路径 题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” &…...
Python入门(3):语句
目录 1 基本语句 1.1 表达式语句 1.2 赋值语句 2 控制流语句 2.1 条件语句 2.2 循环语句 while循环: for循环: 2.3 流程控制语句 1. break语句:退出整个循环体 2. continue语句:只跳过本次循环,还会进…...
04_SQL概述及DDL
文章目录 一、关于SQL1.1、SQL概述1.2、SQL分类 二、数据库操作2.1、查看数据库2.2、切换数据库2.3、查询当前使用的数据库2.4、创建数据库2.5、查看数据库创建信息2.6、修改数据库2.7、删除数据库 三、表的操作3.1、数据类型3.1.1、数值类型3.1.2、字符串类型3.1.3、日期时间类…...
如何调整yarn.nodemanager.vmem-pmem-ratio参数?
调整 yarn.nodemanager.vmem - pmem - ratio 参数,可参考以下步骤: 打开YARN配置文件 找到 yarn - site.xml 文件,该文件通常位于Hadoop配置目录中,例如 /etc/hadoop/conf 或 /opt/module/hadoop - 3.1.3/etc/hadoop 。 找到并修改…...
【质量管理】质量的系统是预防,那以预防为主的质量管理系统包括什么?
“质量的系统是预防”这是克劳士比零缺陷管理四项基本原则的第二项基本原则。什么样的系统才是一个以预防为主的质量管理系统呢? 一个以预防为主的质量系统,必须包括三大方面:质量检验系统、质量保证系统、质量管理系统。 举个例子࿱…...
JavaScript 事件流与事件委托
目录 一、事件流、事件捕获与事件冒泡 1. 事件流(Event Flow) 2. 事件捕获(Event Capturing) 3. 事件冒泡(Event Bubbling) 4. 阻止事件冒泡 5. 事件解绑 6. 实际应用场景 二、事件委托 1. 什么是…...
RAG 优化 Embedding 模型或调整检索策略
在 RAG(Retrieval-Augmented Generation)系统中,优化 Embedding 模型和调整检索策略是提升检索质量的核心手段。以下是系统化的优化方法和实践指南: 一、优化 Embedding 模型 Embedding 模型的质量直接决定检索的召回率(Recall)和准确率(Precision)。优化方向包括: …...
Sentinel[超详细讲解]-3
主要讲解🚀 - 基于QPS/并发数的流量控制 1、流控规则 流量控制(Flow Control)用于限制某个资源的访问频率,防止系统被瞬时的流量高峰冲垮。流量控制规则可以针对不同的资源进行配置,例如接口、方法、类等。 流量规则的…...
vue3使用i18n$t()无法获取数组和对象
今天在使用i18n进行国际化时,定义了数组和对象节点,但是用$t()无法获取,只能返回字符串值,查询相关材料,解决方案如下: 使用新的api替换即可,$t > $tm 参考文章(深表谢意):vue -…...
机器学习的一百个概念(5)数据增强
前言 本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…...
(Kotlin)Android 高效底部导航方案:基于预定义 Menu 和 ViewPager2 的 Fragment 动态绑定实现
支持预定义 Menu 并绑定 Fragment,同时保留动态添加 Tab 的能力 BottomTabHelper.kt package smartconnection.com.smartconnect.home.utilimport android.content.Context import android.util.SparseArray import androidx.annotation.IdRes import androidx.fra…...
零基础入门多媒体音频(4)-GENIVIProjectAudioManager总览
GENIVI Project的AudioManager是一个专门设计用于汽车信息娱乐系统的音频管理解决方案。它负责管理和控制车辆内的音频源和音频路径,确保各种音频信号能够正确、高效地在车辆的音响系统中传输和播放。 AudioManager的核心功能包括音频源的管理、音频路径的控制以及音…...
DeepSeek协助优化-GTX750Ti文物显卡0.65秒卷完400MB float 音频512阶时域FIR
文章目录 1. 学习目的2. 阶段成果2.1 NVVP 性能探查2.2 测试编译环境2.3 测试样例 3 学习过程3.1 提问DeepSeek3.2 最终代码 4. 体会 1. 学习目的 最近在学习cuda,准备给我的taskBus SDR添加CUDA的模块支持,以便可以用PC机压榨山寨 B210那56M的带宽。 因…...
Embedding原理
Embedding(嵌入)是将离散符号(如单词)映射到连续向量空间的核心技术,其本质是语义的数学化表示。以下是其核心原理详解: 一、基础概念图解 graph LRA[单词猫] --> B[索引5] --> C[向量[0.2, -1.3,…...
Spark,配置hadoop集群1
配置运行任务的历史服务器 1.配置mapred-site.xml 在hadoop的安装目录下,打开mapred-site.xml,并在该文件里面增加如下两条配置。 eg我的是在hadoop199上 <!-- 历史服务器端地址 --> <property><name>mapreduce.jobhistory.address…...
人工智能大模型-数据预处理-文本数据预处理-图像数据预处理
文本数据预处理 大模型常用的文本数据类型 通用文本数据:网页、对话和图书资料等专用文本数据:多语言文本、科学文本、代码和指令等 构造方法 指令数据:指令(instruction)、输入(input)、输出(output)3部分组成 如果在instruction部分已…...
怎么使用嵌套虚拟环境实现项目部署之virtualenv嵌套conda绕开安装环境检测实现.venv部署facefusion
#工作记录 一、前言 嵌套虚拟环境本来是不建议的一种方法,这种嵌套虚拟环境的使用有一定特殊性,但在一些特别的使用场景下,嵌套虚拟环境的使用非常有用。 二、嵌套虚拟环境: (一)conda嵌套virtualenv 该…...
ansible介绍以及安装
一.ansible介绍 实现对IT基础设施的批量管控,加快效率,节省工作时间。 1.ansible特性 1.基于python开发,开源, 2.基于ssh协议工作。只需要确保ansible机器,与被控制机器能连通就好了, 3.no server 无…...
GPT-4o图像生成功能:技术突破与隐忧并存
2025年3月25日,OpenAI正式推出GPT-4o原生图像生成功能,宣称其实现了“文本到图像的终极跨越”。然而,这一被市场追捧的技术在短短72小时内便因用户需求过载触发限流,暴露出算力瓶颈与商业化矛盾的尖锐性。这场技术狂欢的背后&…...
Java 时间处理:轻松掌握 java.time 包
前言 在 Java 开发中,日期和时间处理一直是令人头疼的问题。传统的 Date 和 Calendar 类不仅复杂,还充满了线程安全和时区处理的坑。Java 8 引入的 java.time 包彻底改变了这一局面,带来了现代化、直观且功能强大的日期时间 API。 本…...
Vue项目中Vuex在util引入,断点存在default
示例代码 // src/store/index.js import Vue from vue; import Vuex from vuex; ……Vue.use(Vuex); export default new Vuex.Store({…… })// src/utils/index.js import store from /store // 导入默认导出的 store export async function getDict() {store.state.userInf…...
2025宁德时代测评Verify考什么?网申测评如何通过SHL笔试|附真题线上笔试考点、高分攻略、CATL新能源科技SHL测评宁德社招题目、面试攻略、求职建议
——职小豚 带你拆解新能源巨头招聘密码 一、宁德时代:新能源赛道「超级独角兽」 作为全球动力电池龙头,宁德时代(CATL)的江湖地位无需多言: 技术硬实力:麒麟电池、钠离子电池、无钴电池等黑科技加持&…...
谈谈常见的数据结构(如数组、链表、栈、队列、哈希表、树、图)及其应用场景
一、数组(Array) 定义:连续存储相同类型数据的线性结构,支持随机访问。 应用场景:列表渲染、数据缓存、算法处理 代码示例: // 数组基本操作 const arr [1, 2, 3, 4]; arr.push(5); // O(1) 平均时间复杂…...
【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的 AOP:实现日志记录与性能监控
答应我,这篇一定要看到最后~! <前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&a…...
【算法】快速幂
一、概念 快速幂是一种高效的指数运算,当指数范围过大时,通过位运算能够减少大量的计算次数 对于,我们通过将指数b转化为二进制数,就可以将分解为许多的(其中i是指数b中对应位为1的位数) 例如࿰…...
使用卷积神经网络识别MNIST数据集
卷积神经网络 卷积神经网络本质是共享权重稀疏链接的全连接网络 编写步骤 构建一个神经网络,步骤是几乎不变的,大概有以下几步 准备数据集 #更高级的CNN网络 import torch import torch.nn as nn import torch.nn.functional as F import torchvisi…...
JavaScript 中数组增删改查
在 JavaScript 中,数组是一种用来存储不同类型的值的数据结构。 增加数组元素: let arr = [1, 2, 3];// 在数组末尾添加元素 arr.push(4); console.log(arr); // [1, 2, 3, 4]// 在数组开头添加元素 arr.unshift(0); console.log(arr); // [0, 1, 2, 3, 4]// 在指定位置插…...