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

代码随想录算法训练营第三十八天打卡

       今天是动态规划的第三天,昨天的不同路径与整数分解的几道题目大家理解得如何?如果有疑问大家还是多去想想dp数组究竟是什么含义,还有我的状态转移是否正确,初始化是否正确,这一点很重要,今天的题目依旧是跑不出我们的动规五部曲,我们就一起走进我们今天的题目。

第一部分 0-1背包问题的理论基础

       今天我们就进入了动态规划里面一个非常重要的问题:背包问题,首先我们要来了解一下背包问题是什么,它可以解决什么样的问题以及什么情况下我们就可以判定这是一个背包问题,首先我们来看背包问题是什么:

      首先我要先告诉大家一句就是我们Leetcode上是没有单纯的考察0-1背包的题目的。当然我可以给大家补充几道,一个是蓝桥云课上可以找到另一个就是卡码网上会有,那我们重点需要理解0-1背包问题和完全背包问题,尤其是0-1背包问题这个及其重要,假设我们有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。这就是0-1背包问题注意我们的每一件物品只能使用一次,但是如果是完全背包问题那么物品数量是无限的。这点大家要区分清楚。

        接下来是我们如何考虑背包问题:每一件物品其实只有两个状态,取或者不取,所以可以使用回溯法搜索出所有的情况,那么时间复杂度就是O(2^n),这里的n表示物品数量。但是这样使用回溯法太慢了很可能会导致超时,那么我们就需要使用动态规划的思想,举个例子:

dou

       这个当然大家很轻松就看出来了结果就是35,我们有两种选法一个是选择物品0与物品1,一种是选择物品2,很明显我们在达到最大重量之前我们可以获得最大价值,那我们还需要使用动规五部曲来解决背包问题:

1. 确定dp数组以及下标的含义

      这个在动规五部曲里面是很重要的,因为有两个维度需要分别表示:物品 和 背包容量,因此我们需要使用二维数组来表示,dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少,这个很重要的,我们对于每一件产品都存在两种情况就是取或者不取。这点大家要清楚。

2. 确定递推公式

      这个是背包问题很容易出错的地方,其实主要原因还是没搞清楚dp数组的含义,dp[1][4] 我们存在两种情况,分别是:

  1. 放物品1
  2. 还是不放物品1

       因此我们就根据上面给出的例题来看,dp[1][4] = max(dp[0][4], dp[0][1] + 物品1 的价值),我们要取的是最大价值,第一种就是我们不选物品1,那这样目前的最大价值就是前面的物品带来的,如果我们选了物品1,那么我们背包的剩余容量要减去物品1的重量最后不要忘记加上物品1的价值,因为我们的dp数组表示的本就是最大价值。

3. dp数组如何初始化

     关于初始化,一定要和dp数组的定义吻合,否则到递推公式的时候就会越来越乱

     首先从dp[i][j]的定义出发,如果背包容量j为0的话,即dp[i][0],无论是选取哪些物品,背包价值总和一定为0。还有一个dp[0][j]需要考虑,这个其实要取决于背包容量了,如果j >= value[0]的话那我们可以装下这件物品所以初始化为value[0],如果小于的话就是0表示装不下物品

     这里我给出大家初始化的代码:

vector<vector<int>> dp(weight.size(), vector<int>(bagweight + 1, 0));
for (int j = weight[0]; j <= bagweight; j++) {dp[0][j] = value[0];
}

         为什么要倒序遍历就是考虑到了那个可以装下第一件物品的事情。

4. 确定遍历顺序

     先遍历 物品还是先遍历背包重量呢?其实都是可以的,我先给出先遍历物品,然后遍历背包重量的代码。这里两种代码都提供给大家:

// weight数组的大小 就是物品个数
for(int i = 1; i < weight.size(); i++) { // 遍历物品for(int j = 0; j <= bagweight; j++) { // 遍历背包容量if (j < weight[i]) dp[i][j] = dp[i - 1][j];else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);}
}
for(int j = 0; j <= bagweight; j++) { // 遍历背包容量for(int i = 1; i < weight.size(); i++) { // 遍历物品if (j < weight[i]) dp[i][j] = dp[i - 1][j];else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);}
}

        当然我更偏向于第一种先遍历物品再遍历背包的剩余容量,那么最后大家就需要自己打印一下我们的dp数组便于大家理解,也可以看看自己的状态转移方程究竟对不对。

第二部分 0-1背包问题的例题卡码网第46题

       这里我就不多讲了,大家应该可以看出这是一个背包问题,不就是我们这里变成了携带的研究材料取得最大价值,我就直接给出大家ACM模式的代码:

#include <bits/stdc++.h>
using namespace std;int main() {int n, bagweight;// bagweight代表行李箱空间cin >> n >> bagweight;vector<int> weight(n, 0); // 存储每件物品所占空间vector<int> value(n, 0);  // 存储每件物品价值for(int i = 0; i < n; ++i) {cin >> weight[i];}for(int j = 0; j < n; ++j) {cin >> value[j];}// dp数组, dp[i][j]代表行李箱空间为j的情况下,从下标为[0, i]的物品里面任意取,能达到的最大价值vector<vector<int>> dp(weight.size(), vector<int>(bagweight + 1, 0));// 初始化, 因为需要用到dp[i - 1]的值// j < weight[0]已在上方被初始化为0// j >= weight[0]的值就初始化为value[0]for (int j = weight[0]; j <= bagweight; j++) {dp[0][j] = value[0];}for(int i = 1; i < weight.size(); i++) { // 遍历科研物品for(int j = 0; j <= bagweight; j++) { // 遍历行李箱容量if (j < weight[i]) dp[i][j] = dp[i - 1][j]; // 如果装不下这个物品,那么就继承dp[i - 1][j]的值else {dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);}}}cout << dp[n - 1][bagweight] << endl;return 0;
}

第三部分 背包问题的压缩与优化

      在这里我们可以将二维的dp数组优化成一维的dp数组,其实可以发现如果把dp[i - 1]那一层拷贝到dp[i]上,表达式完全可以是:dp[i][j] = max(dp[i][j], dp[i][j - weight[i]] + value[i]);但是大家要注意我们如果压缩后了新的数组的含义就会变成容量为j的背包,所背的物品价值可以最大为dp[j]。这样的话我们的状态转移方程就可以变为:dp[j] = max(dp[j], dp[j - weight[i]] + value[i])。

     dp[j]表示:容量为j的背包,所背的物品价值可以最大为dp[j],那么dp[0]就应该是0,因为背包容量为0所背的物品的最大价值就是0。这里我重要想要讲清楚的是遍历顺序的问题这里会与我们使用二维数组有一些不一样:

for(int i = 0; i < weight.size(); i++) { // 遍历物品for(int j = bagWeight; j >= weight[i]; j--) { // 遍历背包容量dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);}
}

      在这里大家可以看到我们的背包容量是倒序遍历的,这个是为什么其实是为了保证物品i只被放入一次,如果正序遍历我们就会导致那么物品0就会被重复加入多次,这里可以举一个例子助于大家理解:

物品0的重量weight[0] = 1,价值value[0] = 15

如果正序遍历:dp[1] = dp[1 - weight[0]] + value[0] = 15    dp[2] = dp[2 - weight[0]] + value[0] = 30

这样的话我的物品0不就放了两次了,这就不符合0-1背包的要求了。

如果是倒序遍历的话:我们就会先计算dp[2] = dp[2 - weight[0]] + value[0] = 15 (dp数组已经都初始化为0)

接下来就是dp[1] = dp[1 - weight[0]] + value[0] = 15  这样就可以避免出现物品放多次的情况。

       关于背包问题我就给大家讲解这么多,其实这只是背包问题的理论基础,我们还是要去看力扣上涉及到背包问题的具体题目。

开始力扣上的题目第416题分割等和子集

      其实很可能是我算法思维在训练营一个多月变强了,我一看到题目就大致猜出来了要用背包问题的思路来解,不是因为这道题目在背包问题专栏里面,我们来看一下题目的要求:

        这道题目是我们把数组分开,然后看看能不能把这个数组分成两个和的数组,其实这个大家是否可以想清楚就是一个背包问题,就是看看我们能不能达到那个最大价值,那个最大价值就是原先数组和的一半,其实数组里的每一个数字就相当于我们理论基础里面的物品的价值,这里大家要注意有一点就是在这里我们物品的价值与质量其实是等值的,只要想清楚了这一点再加上我们对背包问题已经比较熟悉那么解决这道题目就不难了,我们一起看思路:

        首先我们要先求出原先数组的和,然后我们使用一个变量存储最大价值,也就是和的一半,当然在这里我们进行一步剪枝的操作,如果我们的和是奇数那么就不可能分成两个和相等的数组,这点大家应该注意到,接下来就是我们动态规划的步骤了,同样我们还是定义dp数组,当然初始化很简单dp[0] = 0,我们dp数组表示的是目前i个数的和,当然我们就需要在遍历的时候考虑对于每一个数我们是否选择它,我们就可以写出以下的代码:

class Solution {
public:bool canPartition(vector<int>& nums) {int sum = 0;vector<int> dp(10001, 0);for (int i = 0; i < nums.size(); ++i) sum += nums[i];if (sum % 2 == 1) return false; //奇数不可能凑出两个子集的元素和相等int target = sum / 2;dp[0] = 0;//0-1背包问题但在这里比较特殊的是物品的重量与价值其实是相等的for (int i = 1; i < nums.size(); ++i){for (int j = target; j >= nums[i]; --j){dp[j] = max(dp[j],dp[j - nums[i]] + nums[i]);}}//看看这个背包能不能装满return dp[target] == target;}
};

       下面都是背包问题的理论基础,我们还是先枚举物品再枚举背包容量,当然我们背包容量需要倒序遍历,这是为了保证每一个物品使用一次,最后我们看看dp[target] == target是否正确,就是我们能不能凑出原数组和的一半这个数,如果可以就返回true否则就是false。

今日总结

      今天的背包问题尤其是0-1背包问题其实是很重要的,理解背包问题的二维数组与一维数组的思路,注意遍历顺序就可以了,今天的题目其实大家只看看出考察的就是背包问题估计就不难了,好的,我们今天就分享到这里,我们明天见!

相关文章:

代码随想录算法训练营第三十八天打卡

今天是动态规划的第三天&#xff0c;昨天的不同路径与整数分解的几道题目大家理解得如何&#xff1f;如果有疑问大家还是多去想想dp数组究竟是什么含义&#xff0c;还有我的状态转移是否正确&#xff0c;初始化是否正确&#xff0c;这一点很重要&#xff0c;今天的题目依旧是跑…...

【论信息系统项目的整合管理】

论信息系统项目的整合管理 某省机场管理集团航空货运站原有物流生产信息系统无法满足机场货运站生产信息与航空公司、对方航站、进出口航空货物按海关监管要求电子报关等行业信息实时共享发展需要&#xff0c;生产信息需多次重复录入问题已成为业务发展最大瓶颈&#xff0c;急需…...

小学数学题批量生成及检查工具

软件介绍 今天给大家介绍一款近期发现的小工具&#xff0c;它非常实用。 软件特点与出题功能 这款软件体积小巧&#xff0c;不足两兆&#xff0c;具备强大的功能&#xff0c;能够轻松实现批量出题。使用时&#xff0c;只需打开软件&#xff0c;输入最大数和最小数&#xff0c…...

Python线性回归:从理论到实践的完整指南

Python线性回归&#xff1a;从理论到实践的完整指南 线性回归是数据科学和机器学习中最基础且最重要的算法之一。本文将深入探讨如何使用Python实现线性回归&#xff0c;从理论基础到实际应用&#xff0c;帮助读者全面理解这一重要的统计学和机器学习方法。 什么是线性回归&a…...

python 爬虫框架介绍

文章目录 前言一、Requests BeautifulSoup&#xff08;基础组合&#xff09;二、Scrapy&#xff08;高级框架&#xff09;三、PySpider&#xff08;可视化爬虫&#xff09;四、Selenium&#xff08;浏览器自动化&#xff09;五、Playwright&#xff08;新一代浏览器自动化&…...

强化学习算法实战:一个例子搞懂sarsa、dqn、ddqn、qac、a2c及其区别

简介 在学习强化学习算法&#xff1a;sarsa、dqn、ddqn、qac、a2c、trpo、ppo时&#xff0c;由于有大量数学公式的推导&#xff0c;觉得十分晦涩&#xff0c;且听过就忘记了。 但是当把算法应用于实战时&#xff0c;代码的实现要比数学推导直观很多。 接下来通过不同的算法实现…...

文章记单词 | 第86篇(六级)

一&#xff0c;单词释义 pretty /ˈprɪti/- adj. 漂亮的&#xff1b;相当的 /adv. 相当地labour /ˈleɪbə(r)/- n. 劳动&#xff1b;劳工&#xff1b;分娩 /v. 劳动&#xff1b;努力&#xff08;英式英语&#xff0c; labor&#xff09;imaginary /ɪˈmdʒɪnəri/- adj. …...

firewall防火墙

一.Firewalld 防火墙概述 1.firewalld 简介 firewalld 的作用是为包过滤机制提供匹配规则(或称为策略)&#xff0c;通过各种不同的规则告诉netfilter 对来自指定源、前往指定目的或具有某些协议特征的数据包采取何种处理方式为了更加方便地组织和管理防火墙,firewa11d 提供了…...

TII-2024《AGP-Net: Adaptive Graph Prior Network for Image Denoising》

推荐深蓝学院的《深度神经网络加速&#xff1a;cuDNN 与 TensorRT》&#xff0c;课程面向就业&#xff0c;细致讲解CUDA运算的理论支撑与实践&#xff0c;学完可以系统化掌握CUDA基础编程知识以及TensorRT实战&#xff0c;并且能够利用GPU开发高性能、高并发的软件系统&#xf…...

Pageassist安装(ollama+deepseek-r1)

page-assist网站&#xff1a;https://github.com/n4ze3m/page-assist 首先电脑配置node.js&#xff0c;管理员打开命令窗口输入下面命令下载bun npm install -g buncd 到你想要安装page-assist的地方&#xff08;推荐桌面&#xff09; 输入下列命令 git clone https://gith…...

Java—— 方法引用 : :

方法引用是什么 把已经存在的方法拿过来用&#xff0c;当做函数式接口中抽象方法的方法体 方法引用符 &#xff1a;&#xff1a; 方法引用的条件 1.需要有函数式接口 2.被引用方法必须已经存在 3.被引用方法的形参和返回值需要跟抽象方法保持一致 4.被引用方法的功能要满足当前…...

Linux基础开发工具大全

目录 软件包管理器 1>软件包 2>软件生态 3>yum操作 a.查看软件包 b.安装软件 c.卸载软件 4>知识点 vim编辑器 1>基本概念 2>基本操作 3>正常模式命令集 a.模式切换 b.移动光标 c.删除 d.复制 e.替换 f.撤销 g.更改 4>底行模式命令…...

C语言实现INI配置文件读取和写入

一.INI文件介绍 INI配置文件是一种简单的文本文件&#xff0c;用于存储配置信息&#xff0c;通常由一个或多个节&#xff08;section&#xff09;组成&#xff0c;每个节包含多个键值对&#xff08;Key-Value&#xff09;格式。INI文件易于阅读和编辑&#xff0c;广泛应用于多…...

volatile关键字详解

volatile关键字详解 1. 定义与核心作用 volatile 是Java中的关键字&#xff0c;用于修饰变量&#xff0c;主要解决多线程环境下的内存可见性和指令重排序问题。其核心作用&#xff1a; 保证可见性&#xff1a;确保所有线程读取到变量的最新值。禁止指令重排序&#xff1a;防止…...

二叉树子树判断:从递归到迭代的全方位解析

一、题目解析 题目描述 给定两棵二叉树root和subRoot&#xff0c;判断root中是否存在一棵子树&#xff0c;其结构和节点值与subRoot完全相同。 示例说明 示例1&#xff1a; root [3,4,5,1,2]&#xff0c;subRoot [4,1,2] 返回true&#xff0c;因为root的左子树与subRoot完…...

【PhysUnits】4.1 类型级比特位实现解释(boolean.rs)

一、源码 该代码实现了一个类型级(type-level)的布尔系统&#xff0c;允许在编译时进行布尔运算。 //! 类型级比特位实现 //! //! 这些是基础的比特位类型&#xff0c;作为本库中其他数值类型的构建基础 //! //! 已实现的**类型运算符**&#xff1a; //! //! - 来自 core::op…...

(7)python开发经验

文章目录 1 找不到资源文件2 使用subprocess执行时有黑色弹窗3 找不到exec4 pyside6-project lupdate的bug5 找不到pyd模块6 pyd模块编码错误7 运行显示Qt platform plugin "windows" in "8 tr()包含的字符串无法被翻译 更多精彩内容&#x1f449;内容导航 &…...

【Manim】使用manim画一个高斯分布的动画

1 Manim例子一 最近接触到manim&#xff0c;觉得挺有趣的&#xff0c;来玩一玩把。如下是一个使用manim画的高斯分布的动画。 from manim import * import numpy as npclass GaussianDistribution(Scene):def construct(self):# 创建坐标系axes Axes(x_range[-4, 4, 1],y_ra…...

Day11-苍穹外卖(数据统计篇)

前言&#xff1a; 今天写day11的内容&#xff0c;主要讲了四个统计接口的制作。看起来内容较多&#xff0c;其实代码逻辑都是相似的&#xff0c;这里我们过一遍。 今日所学&#xff1a; Apache ECharts营业额统计用户统计订单统计销量排行统计 1. Apache ECharts 1.1 介绍 A…...

论文阅读:Self-Collaboration Code Generation via ChatGPT

地址&#xff1a;Self-Collaboration Code Generation via ChatGPT 摘要 尽管大型语言模型&#xff08;LLMs&#xff09;在代码生成能力方面表现出色&#xff0c;但在处理复杂任务时仍存在挑战。在现实软件开发中&#xff0c;人类通常通过团队协作来应对复杂任务&#xff0c;…...

LocaleContextResolver实现多语言切换-笔记

1. LocaleContextResolver功能简介 org.springframework.web.servlet.LocaleContextResolver是 Spring MVC 中用于解析和管理用户 Locale&#xff08;语言环境&#xff09; 的核心接口。 //LocaleContextResolver 接口定义 public interface LocaleContextResolver extends L…...

Vue3中setup运行时机介绍

在 Vue3 中&#xff0c;直接写在 <script setup>...</script> 中的代码运行时机可以分为以下几个关键阶段&#xff1a; 一、执行顺序层级 #mermaid-svg-bF3p98MiNdLfcoSG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#33…...

计算机视觉----感兴趣区域(ROI)、非极大值抑制

感兴趣区域&#xff08;Region of Interest&#xff0c;ROI&#xff09;是指在一幅图像或者数据集中&#xff0c;用户关注并希望进行重点分析、处理或者研究的特定区域。以下为你详细介绍它在不同领域的应用&#xff1a; 医学影像领域 在医学影像中&#xff0c;医生可以通过确…...

YOLO11解决方案之对象裁剪探索

概述 Ultralytics提供了一系列的解决方案&#xff0c;利用YOLO11解决现实世界的问题&#xff0c;包括物体计数、模糊处理、热力图、安防系统、速度估计、物体追踪等多个方面的应用。 对象裁剪是指从图像或视频中分离并提取特定的检测对象&#xff0c;YOLO11 模型功能可用于准…...

将单链表反转【数据结构练习题】

- 第 98 篇 - Date: 2025 - 05 - 16 Author: 郑龙浩/仟墨 反转单链表(出现频率非常的高) 文章目录 反转单链表(出现频率非常的高)题目&#xff1a;反转一个链表思路&#xff1a;代码实现(第3种思路): 题目&#xff1a;反转一个链表 将 1->2->3->4->5->NULL反转…...

多网卡管理实战指南:原理、问题分析与实用工具推荐

多网卡管理实战指南&#xff1a;原理、问题分析与实用工具推荐 在现代网络环境中&#xff0c;越来越多的用户面临一个实际问题&#xff1a;一台电脑连接了多个网络接口&#xff0c;如有线 无线、双有线、或实体网卡 虚拟VPN网卡。这种“多网卡”环境虽然提供了更多可能性&am…...

qt5.14.2 opencv调用摄像头显示在label

ui界面添加一个Qlabel名字是默认的label 还有一个button名字是pushButton mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <opencv2/opencv.hpp> // 添加OpenCV头文件 #include <QTimer> // 添加定…...

使用Python实现简单的人工智能聊天机器人

最近研学过程中发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面开始对正文内容的…...

Python爬虫(28)Python爬虫高阶:Selenium+Splash双引擎渲染实战与性能优化

目录 一、背景&#xff1a;动态渲染技术的演进与挑战二、核心技术对比与选型三、环境搭建与工具链配置1. Docker部署Splash集群2. Selenium环境配置 四、双引擎渲染核心实现1. 智能路由中间件2. Splash高级Lua脚本控制 五、性能优化实战方案1. 浏览器资源池化2. 异步渲染加速 六…...

uv python 卸载

又是查了半天 官网wiki没有 网上一堆傻子胡说 uv提示也不对 AI还在这尼玛胡编乱造 开始 我原来装了这几个环境 uv python list 现在python3.7.7不需要了&#xff0c;卸载&#xff0c;直接 uv python uninstall 3.7.7 去找你自己要卸载的版本号&#xff0c;不需要整个包名复制…...

如何备考GRE?

1.引言 GRE和雅思不太相同&#xff0c;首先GRE是美国人的考试&#xff0c;思维方式和很多细节和英系雅思不一样。所以底层逻辑上我觉得有点区别。 难度方面&#xff0c;我感觉GRE不容易考低分&#xff0c;但考高分较难。雅思就不一样了不仅上限难突破&#xff0c;下限还容易6…...

Crowdfund Insider聚焦:CertiK联创顾荣辉解析Web3.0创新与安全平衡之术

近日&#xff0c;权威金融科技媒体Crowdfund Insider发布报道&#xff0c;聚焦CertiK联合创始人兼CEO顾荣辉教授在Unchained Summit的主题演讲。报道指出&#xff0c;顾教授的观点揭示了Web3.0生态当前面临的挑战&#xff0c;以及合规与技术在推动行业可持续发展中的关键作用。…...

第六章 进阶10 实习生的焦虑

时间过得很快&#xff0c;实习的蕾蕾入职已经三个月了&#xff0c;到了离开的日子。 照例我和她约了1对1谈话&#xff0c;在开始和结束阶段的谈话格外有意义。 谈话的最后&#xff0c;我问蕾蕾有没有什么问题问我&#xff0c;她的问题让我格外惊讶&#xff1a; “自己有点焦…...

技术融资:概念与形式、步骤与案例、挑战与应对、发展趋势

一、技术融资概述 技术融资是指通过外部资金支持技术研发、产品开发或市场扩展的过程。它通常涉及风险投资、天使投资、私募股权、众筹等多种形式。技术融资的核心目标是为技术创新提供资金保障&#xff0c;推动技术从概念到市场的转化。 技术融资的主要形式包括以下几种&…...

duxapp 2025-03-29 更新 编译结束的复制逻辑等

CLI copy 文件夹内的内容支持全量复制优化小程序配置文件合并逻辑&#xff08;更新后建议将 project.config.json 文件从git的追踪中移除&#xff09;新增 copy.build.complete 文件夹的复制逻辑&#xff0c;会在程序编译结束之后将文件复制到指定位置 &#xff08;模块和用户…...

【Linux】Shell脚本中向文件中写日志,以及日志文件大小、数量管理

1、写日志 shell脚本中使用echo命令,将字符串输入到文件中 覆盖写入:echo “Hello, World!” > laoer.log ,如果文件不存在,则会创建文件追加写入:echo “Hello, World!” >> laoer.log转移字符:echo -e “Name:\tlaoer\nAge:\t18” > laoer.log,\t制表符 …...

Qwen3技术报告

参考链接&#xff1a;https://zhuanlan.zhihu.com/p/1905945819108079268 介绍的很详细&#xff0c;先贴后续再整理...

python + flask 做一个图床

1. 起因&#xff0c; 目的: 对这个网站&#xff1a;https://img.vdoerig.com/ &#xff0c; 我也想实现这种效果。做一个简单的图床&#xff0c;后面&#xff0c;可以结合到其他项目中。 2. 先看效果 实际效果。 3. 过程: Grok 聊天&#xff1a; https://img.vdoerig.co…...

虚拟来电 4.3.0 |集虚拟来电与短信于一体,解锁VIP优雅脱身

虚拟来电是一款集虚拟来电与虚拟短信于一体的应用程序。它可以帮助用户在需要时模拟一个真实的来电或短信&#xff0c;以最顾及对方情面的方式逃离尴尬场合。无论是自定义来电联系人、时间、次数&#xff0c;还是设置自定义通话语音、来电震动和铃声&#xff0c;这款解锁了VIP功…...

日志与策略模式

什么是设计模式 IT⾏业 ,为了让 菜鸡们不太拖⼤佬的后腿, 于是⼤佬们针对⼀些经典的常⻅的场景, 给定了⼀些对应的解决⽅案, 这个就是 设计模式 日志认识 计算机中的⽇志是记录系统和软件运⾏中发⽣事件的⽂件&#xff0c;主要作⽤是监控运⾏状态、记录异常信 息&#xff…...

Linux下载与安装

一、YUM 1.1 什么是YUM 在CentOS系统中&#xff0c;软件管理方式通常有三种方式&#xff1a;rpm安装、yum安装以及编译&#xff08;源码&#xff09;安装。 编译安装&#xff0c;从过程上来讲比较麻烦&#xff0c;包需要用户自行下载&#xff0c;下载的是源码包&#xff0c;需…...

java18

1.API之时间类 Date类&#xff1a; SimpleDateFormat类&#xff1a; Calendar类&#xff1a;...

向量和矩阵范数

向量和矩阵范数 向量范数 定义 设 x T \boldsymbol{x}^\text{T} xT&#xff0c; y T \boldsymbol{y}^\text{T} yT ∈ K n \in \mathbb{K}^n ∈Kn,数量积定义为&#xff1a; y T x ( 或 y H x ) \boldsymbol{y} ^\text{T} \boldsymbol{x}\left(或\boldsymbol{y}^\text{H}\bo…...

使用 gcloud CLI 自动化管理 Google Cloud 虚拟机

被操作的服务器&#xff0c;一定要开启API完全访问权限&#xff0c;你的电脑安装gcloud CLI前一定要先安装Python3&#xff01; 操作步骤 下载地址&#xff0c;安装大概需要十分钟&#xff1a;https://cloud.google.com/sdk/docs/install?hlzh-cn#windows 选择你需要的版本&a…...

驱动芯片走线、过孔指导,大电流、散热过孔

参考&#xff1a; 一份大厂PCB布局指南参考&#xff01; 技巧 使用大面积铺铜 铜是一种极好的导热体。由于 PCB 的基板材料&#xff08;FR-4 玻璃环氧树脂&#xff09;是一种不良导热体。因此&#xff0c;从热管理的角度来看&#xff0c;PCB的铺铜区域越多则导热越理想。 走…...

数据结构进阶:AVL树与红黑树

目录 前言 AVL树 定义 结构 插入 AVL树插入的大致过程 更新平衡因子 旋转 右单旋 左单旋 左右双旋 右左双旋 实现 红黑树 定义 性质 结构 插入 实现 总结 前言 在学习了二叉搜索树之后&#xff0c;我们了解到其有个致命缺陷——当树的形状呈现出一边倒…...

AI人工智能在交通物流领域的应用

AI人工智能在交通物流领域的应用 AI人工智能在交通物流领域有着广泛而深入的应用&#xff0c;正推动着该领域的深刻变革&#xff0c;以下是详细介绍&#xff1a; 交通领域 智能驾驶 自动驾驶汽车&#xff1a;依靠深度学习算法、计算机视觉、激光雷达和传感器融合技术&#x…...

牛客网NC22222:超半的数

牛客网NC22222:超半的数 题目描述 输入输出格式 输入格式&#xff1a; 第一行包含一个整数 n (1 ≤ n ≤ 1000)第二行包含 n 个整数 a_i (1 ≤ a_i ≤ 10^9) 输出格式&#xff1a; 输出一个整数&#xff0c;表示出现次数超过一半的那个数 解题思路 这道题目有多种解法&a…...

在服务器上安装AlphaFold2遇到的问题(2)

如何删除已安装的cuDNN 1. 通过包管理器卸载&#xff08;推荐&#xff09; RHEL/CentOS (dnf/yum) #查看已安装的 cuDNN 包 sudo dnf list installed | grep cudnn #卸载 cuDNN 运行时和开发包 sudo dnf remove -y libcudnn* libcudnn8* libcudnn-devel* Ubuntu/Debian (ap…...

【2025年软考中级】第一章1.5 输入输出技术(外设)

文章目录 输入输出技术&#xff08;外设&#xff09;I/O设备总线结构输入输出控制程序控制方式中断方式直接内存存取&#xff08;DMAC&#xff09;方式IO通道方式和外围处理机&#xff08;IOP&#xff09;方式 数据传输方式生物特征认证技术 输入输出技术&#xff08;外设&…...