【2024年华为OD机试】 (A卷,100分)- 租车骑绿岛(Java JS PythonC/C++)

news2025/1/12 9:27:31

在这里插入图片描述

一、问题描述

题目描述

部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐两人,最大载重 M
给出部门每个人的体重,请问最多需要租用多少双人自行车。

输入描述

第一行两个数字 mn,分别代表自行车限重,部门总人数。

第二行,n 个数字,代表每个人的体重,体重都小于等于自行车限重 m

  • 0 < m <= 200
  • 0 < n <= 1000000

输出描述

最小需要的双人自行车数量。

用例

用例 1

输入:

3 4
3 2 2 1

输出:

3

说明:

解题思路

  1. 排序:首先将所有人的体重从小到大排序。
  2. 双指针:使用双指针方法,一个指针指向最轻的人,一个指针指向最重的人。
  3. 配对:尝试将最轻的人和最重的人配对,如果他们的体重之和不超过自行车的限重 M,则将他们配对,否则最重的人单独占用一辆自行车。
  4. 移动指针:每次配对成功后,移动两个指针,继续尝试下一对。
  5. 计数:统计需要的自行车数量。
核心思路
  1. 排序:首先将所有人的体重按升序排序。
  2. 处理超重个体:如果某个人的体重已经大于等于 m,则他必须单独乘坐一辆车。
  3. 双指针组合:对于剩余的人,使用双指针从两端向中间遍历,尝试将最小体重和最大体重的人组合在一起。
  4. 分配车辆
    • 如果两人体重之和小于等于 m,则可以共享一辆车。
    • 如果两人体重之和大于 m,则只能让较大体重的人单独乘坐一辆车。
  5. 处理剩余个体:如果最后剩下一个人未分配车辆,则需要单独为他分配一辆车。
详细步骤
  1. 排序

    • 将所有人的体重按升序排序,方便后续处理。
  2. 处理超重个体

    • 检查排序后的体重数组,从最大体重开始:
      • 如果某个人的体重大于等于 m,则他必须单独乘坐一辆车。
      • 将这个人从数组中移除,并增加车辆计数 count++
    • 重复上述步骤,直到最大体重小于 m
  3. 双指针组合

    • 初始化两个指针:
      • i 指向最小体重(数组开头)。
      • j 指向最大体重(数组末尾)。
    • 循环遍历数组:
      • 如果 arr[i] + arr[j] <= m,则两人可以共享一辆车,增加车辆计数 count++,并移动指针 i++j--
      • 如果 arr[i] + arr[j] > m,则较大体重的人必须单独乘坐一辆车,增加车辆计数 count++,并移动指针 j--
  4. 处理剩余个体

    • 如果最后 i === j,说明还有一个人未分配车辆,需要单独为他分配一辆车,增加车辆计数 count++
  5. 输出结果

    • 最终的 count 就是所需的最少车辆数。
示例

假设有以下输入:

  • 体重数组:[50, 60, 70, 80, 90]
  • 车辆载重限制:m = 150

步骤解析

  1. 排序[50, 60, 70, 80, 90](已经是升序)。
  2. 处理超重个体
    • 最大体重 90 < 150,无需处理。
  3. 双指针组合
    • i = 0(50),j = 4(90):
      • 50 + 90 = 140 <= 150,可以共享一辆车,count++,移动指针 i++j--
    • i = 1(60),j = 3(80):
      • 60 + 80 = 140 <= 150,可以共享一辆车,count++,移动指针 i++j--
    • i = 2(70),j = 2(70):
      • i === j,说明还有一个人未分配车辆,需要单独为他分配一辆车,count++
  4. 输出结果
    • 最少需要 3 辆车。
总结
  • 时间复杂度:排序的时间复杂度为 O(n log n),双指针遍历的时间复杂度为 O(n),总时间复杂度为 O(n log n)
  • 空间复杂度:排序需要 O(n) 的额外空间(如果使用原地排序则为 O(1))。
  • 核心思想:通过排序和双指针,尽可能组合出两人组,减少车辆使用。

如果有其他问题,欢迎随时提问!

二、JavaScript算法源码

以下是带有 详细中文注释逻辑讲解 的 JavaScript 代码:


代码实现

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

const lines = [];
rl.on("line", (line) => {
  lines.push(line);

  // 当输入行数为 2 时,表示输入完成
  if (lines.length === 2) {
    // 解析输入
    const [m, n] = lines[0].split(" ").map(Number); // 车辆载重限制 m,人数 n
    const arr = lines[1].split(" ").map(Number); // 每个人的体重数组

    // 调用算法并输出结果
    console.log(getResult(arr, m, n));

    // 清空输入缓存
    lines.length = 0;
  }
});

/**
 * 计算最少需要的车辆数
 * @param {number[]} arr 每个人的体重数组
 * @param {number} m 车辆载重限制
 * @param {number} n 人数
 * @returns {number} 最少需要的车辆数
 */
function getResult(arr, m, n) {
  // 将体重数组按升序排序
  arr.sort((a, b) => a - b);

  let count = 0; // 车辆计数

  // 双指针初始化
  let i = 0; // 指向最小体重
  let j = arr.length - 1; // 指向最大体重

  // 双指针遍历
  while (i < j) {
    // 如果最小体重和最大体重的和小于等于 m,则可以共享一辆车
    if (arr[i] + arr[j] <= m) {
      i++; // 移动最小体重指针
    }
    j--; // 移动最大体重指针
    count++; // 无论是否共享,都需要一辆车
  }

  // 如果最后剩下一个人未分配车辆,则需要单独为他分配一辆车
  if (i === j) count++;

  return count;
}

代码逻辑讲解

1. 输入处理
  • 使用 readline 模块从控制台读取输入。
  • 第一行输入为车辆载重限制 m 和人数 n
  • 第二行输入为每个人的体重数组 arr
2. 排序
  • 将体重数组 arr 按升序排序,方便后续双指针操作。
  • 排序后,最小体重在数组开头,最大体重在数组末尾。
3. 双指针逻辑
  • 初始化两个指针:
    • i 指向最小体重(数组开头)。
    • j 指向最大体重(数组末尾)。
  • 循环遍历数组:
    • 如果 arr[i] + arr[j] <= m,说明两人可以共享一辆车:
      • 移动最小体重指针 i++
      • 移动最大体重指针 j--
      • 增加车辆计数 count++
    • 如果 arr[i] + arr[j] > m,说明两人无法共享一辆车:
      • 只能让较大体重的人单独乘坐一辆车。
      • 移动最大体重指针 j--
      • 增加车辆计数 count++
4. 处理剩余个体
  • 如果最后 i === j,说明还有一个人未分配车辆:
    • 需要单独为他分配一辆车。
    • 增加车辆计数 count++
5. 返回结果
  • 最终的 count 就是所需的最少车辆数。

示例分析

输入
150 5
50 60 70 80 90
步骤解析
  1. 排序
    • 体重数组排序后为 [50, 60, 70, 80, 90]
  2. 双指针遍历
    • i = 0(50),j = 4(90):
      • 50 + 90 = 140 <= 150,可以共享一辆车。
      • 移动指针 i++j--
      • 车辆计数 count++count = 1)。
    • i = 1(60),j = 3(80):
      • 60 + 80 = 140 <= 150,可以共享一辆车。
      • 移动指针 i++j--
      • 车辆计数 count++count = 2)。
    • i = 2(70),j = 2(70):
      • i === j,说明还有一个人未分配车辆。
      • 需要单独为他分配一辆车。
      • 车辆计数 count++count = 3)。
  3. 输出结果
    • 最少需要 3 辆车。

总结

  • 时间复杂度:排序的时间复杂度为 O(n log n),双指针遍历的时间复杂度为 O(n),总时间复杂度为 O(n log n)
  • 空间复杂度:排序需要 O(n) 的额外空间(如果使用原地排序则为 O(1))。
  • 核心思想:通过排序和双指针,尽可能组合出两人组,减少车辆使用。

如果有其他问题,欢迎随时提问!

三、Java算法源码

以下是带有 详细中文注释逻辑讲解 的 Java 代码:


代码实现

import java.util.Arrays;
import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    // 创建 Scanner 对象,用于读取输入
    Scanner sc = new Scanner(System.in);

    // 读取车辆载重限制 m 和人数 n
    int m = sc.nextInt();
    int n = sc.nextInt();

    // 读取每个人的体重,并存储到数组 arr 中
    int[] arr = new int[n];
    for (int i = 0; i < n; i++) {
      arr[i] = sc.nextInt();
    }

    // 调用算法并输出结果
    System.out.println(getResult(arr, m));
  }

  /**
   * 计算最少需要的车辆数
   * @param arr 每个人的体重数组
   * @param m 车辆载重限制
   * @return 最少需要的车辆数
   */
  public static int getResult(int[] arr, int m) {
    // 将体重数组按升序排序
    Arrays.sort(arr);

    int count = 0; // 车辆计数

    // 双指针初始化
    int i = 0; // 指向最小体重
    int j = arr.length - 1; // 指向最大体重

    // 双指针遍历
    while (i < j) {
      // 如果最小体重和最大体重的和小于等于 m,则可以共享一辆车
      if (arr[i] + arr[j] <= m) {
        i++; // 移动最小体重指针
      }
      j--; // 移动最大体重指针
      count++; // 无论是否共享,都需要一辆车
    }

    // 如果最后剩下一个人未分配车辆,则需要单独为他分配一辆车
    if (i == j) count++;

    return count;
  }
}

代码逻辑讲解

1. 输入处理
  • 使用 Scanner 从控制台读取输入。
  • 第一行输入为车辆载重限制 m 和人数 n
  • 第二行输入为每个人的体重数组 arr
2. 排序
  • 使用 Arrays.sort() 将体重数组 arr 按升序排序,方便后续双指针操作。
  • 排序后,最小体重在数组开头,最大体重在数组末尾。
3. 双指针逻辑
  • 初始化两个指针:
    • i 指向最小体重(数组开头)。
    • j 指向最大体重(数组末尾)。
  • 循环遍历数组:
    • 如果 arr[i] + arr[j] <= m,说明两人可以共享一辆车:
      • 移动最小体重指针 i++
      • 移动最大体重指针 j--
      • 增加车辆计数 count++
    • 如果 arr[i] + arr[j] > m,说明两人无法共享一辆车:
      • 只能让较大体重的人单独乘坐一辆车。
      • 移动最大体重指针 j--
      • 增加车辆计数 count++
4. 处理剩余个体
  • 如果最后 i == j,说明还有一个人未分配车辆:
    • 需要单独为他分配一辆车。
    • 增加车辆计数 count++
5. 返回结果
  • 最终的 count 就是所需的最少车辆数。

示例分析

输入
150 5
50 60 70 80 90
步骤解析
  1. 排序
    • 体重数组排序后为 [50, 60, 70, 80, 90]
  2. 双指针遍历
    • i = 0(50),j = 4(90):
      • 50 + 90 = 140 <= 150,可以共享一辆车。
      • 移动指针 i++j--
      • 车辆计数 count++count = 1)。
    • i = 1(60),j = 3(80):
      • 60 + 80 = 140 <= 150,可以共享一辆车。
      • 移动指针 i++j--
      • 车辆计数 count++count = 2)。
    • i = 2(70),j = 2(70):
      • i == j,说明还有一个人未分配车辆。
      • 需要单独为他分配一辆车。
      • 车辆计数 count++count = 3)。
  3. 输出结果
    • 最少需要 3 辆车。

总结

  • 时间复杂度:排序的时间复杂度为 O(n log n),双指针遍历的时间复杂度为 O(n),总时间复杂度为 O(n log n)
  • 空间复杂度:排序需要 O(n) 的额外空间(如果使用原地排序则为 O(1))。
  • 核心思想:通过排序和双指针,尽可能组合出两人组,减少车辆使用。

如果有其他问题,欢迎随时提问!

四、Python算法源码

以下是带有 详细中文注释逻辑讲解 的 Python 代码:


代码实现

# 输入获取
m, n = map(int, input().split())  # 读取车辆载重限制 m 和人数 n
arr = list(map(int, input().split()))  # 读取每个人的体重,并存储到列表 arr 中

# 算法入口
def getResult(arr, m, n):
    arr.sort()  # 将体重列表按升序排序

    count = 0  # 车辆计数

    i = 0  # 指向最小体重
    j = n - 1  # 指向最大体重

    # 双指针遍历
    while i < j:
        # 如果最小体重和最大体重的和小于等于 m,则可以共享一辆车
        if arr[i] + arr[j] <= m:
            i += 1  # 移动最小体重指针
        j -= 1  # 移动最大体重指针
        count += 1  # 无论是否共享,都需要一辆车

    # 如果最后剩下一个人未分配车辆,则需要单独为他分配一辆车
    if i == j:
        count += 1

    return count  # 返回最少需要的车辆数

# 算法调用
print(getResult(arr, m, n))

代码逻辑讲解

1. 输入处理
  • 使用 input().split() 从控制台读取输入。
  • 第一行输入为车辆载重限制 m 和人数 n
  • 第二行输入为每个人的体重列表 arr
2. 排序
  • 使用 arr.sort() 将体重列表 arr 按升序排序,方便后续双指针操作。
  • 排序后,最小体重在列表开头,最大体重在列表末尾。
3. 双指针逻辑
  • 初始化两个指针:
    • i 指向最小体重(列表开头)。
    • j 指向最大体重(列表末尾)。
  • 循环遍历列表:
    • 如果 arr[i] + arr[j] <= m,说明两人可以共享一辆车:
      • 移动最小体重指针 i += 1
      • 移动最大体重指针 j -= 1
      • 增加车辆计数 count += 1
    • 如果 arr[i] + arr[j] > m,说明两人无法共享一辆车:
      • 只能让较大体重的人单独乘坐一辆车。
      • 移动最大体重指针 j -= 1
      • 增加车辆计数 count += 1
4. 处理剩余个体
  • 如果最后 i == j,说明还有一个人未分配车辆:
    • 需要单独为他分配一辆车。
    • 增加车辆计数 count += 1
5. 返回结果
  • 最终的 count 就是所需的最少车辆数。

示例分析

输入
150 5
50 60 70 80 90
步骤解析
  1. 排序
    • 体重列表排序后为 [50, 60, 70, 80, 90]
  2. 双指针遍历
    • i = 0(50),j = 4(90):
      • 50 + 90 = 140 <= 150,可以共享一辆车。
      • 移动指针 i += 1j -= 1
      • 车辆计数 count += 1count = 1)。
    • i = 1(60),j = 3(80):
      • 60 + 80 = 140 <= 150,可以共享一辆车。
      • 移动指针 i += 1j -= 1
      • 车辆计数 count += 1count = 2)。
    • i = 2(70),j = 2(70):
      • i == j,说明还有一个人未分配车辆。
      • 需要单独为他分配一辆车。
      • 车辆计数 count += 1count = 3)。
  3. 输出结果
    • 最少需要 3 辆车。

总结

  • 时间复杂度:排序的时间复杂度为 O(n log n),双指针遍历的时间复杂度为 O(n),总时间复杂度为 O(n log n)
  • 空间复杂度:排序需要 O(n) 的额外空间(如果使用原地排序则为 O(1))。
  • 核心思想:通过排序和双指针,尽可能组合出两人组,减少车辆使用。

如果有其他问题,欢迎随时提问!

五、C/C++算法源码:

以下是 C++ 实现 的代码,带有 详细中文注释逻辑讲解


C++ 代码实现

#include <iostream>
#include <vector>
#include <algorithm> // 用于 sort 函数
using namespace std;

// 算法入口
int getResult(vector<int>& arr, int m, int n) {
    sort(arr.begin(), arr.end()); // 将体重列表按升序排序

    int count = 0; // 车辆计数

    int i = 0; // 指向最小体重
    int j = n - 1; // 指向最大体重

    // 双指针遍历
    while (i < j) {
        // 如果最小体重和最大体重的和小于等于 m,则可以共享一辆车
        if (arr[i] + arr[j] <= m) {
            i++; // 移动最小体重指针
        }
        j--; // 移动最大体重指针
        count++; // 无论是否共享,都需要一辆车
    }

    // 如果最后剩下一个人未分配车辆,则需要单独为他分配一辆车
    if (i == j) {
        count++;
    }

    return count; // 返回最少需要的车辆数
}

int main() {
    int m, n;
    cin >> m >> n; // 读取车辆载重限制 m 和人数 n

    vector<int> arr(n); // 定义存储体重的数组
    for (int i = 0; i < n; i++) {
        cin >> arr[i]; // 读取每个人的体重
    }

    // 调用算法并输出结果
    cout << getResult(arr, m, n) << endl;

    return 0;
}

代码逻辑讲解

1. 输入处理
  • 使用 cin 从控制台读取输入。
  • 第一行输入为车辆载重限制 m 和人数 n
  • 第二行输入为每个人的体重,存储到 vector<int> arr 中。
2. 排序
  • 使用 sort(arr.begin(), arr.end()) 将体重列表 arr 按升序排序。
  • 排序后,最小体重在列表开头,最大体重在列表末尾。
3. 双指针逻辑
  • 初始化两个指针:
    • i 指向最小体重(列表开头)。
    • j 指向最大体重(列表末尾)。
  • 循环遍历列表:
    • 如果 arr[i] + arr[j] <= m,说明两人可以共享一辆车:
      • 移动最小体重指针 i++
      • 移动最大体重指针 j--
      • 增加车辆计数 count++
    • 如果 arr[i] + arr[j] > m,说明两人无法共享一辆车:
      • 只能让较大体重的人单独乘坐一辆车。
      • 移动最大体重指针 j--
      • 增加车辆计数 count++
4. 处理剩余个体
  • 如果最后 i == j,说明还有一个人未分配车辆:
    • 需要单独为他分配一辆车。
    • 增加车辆计数 count++
5. 返回结果
  • 最终的 count 就是所需的最少车辆数。

示例分析

输入
150 5
50 60 70 80 90
步骤解析
  1. 排序
    • 体重列表排序后为 [50, 60, 70, 80, 90]
  2. 双指针遍历
    • i = 0(50),j = 4(90):
      • 50 + 90 = 140 <= 150,可以共享一辆车。
      • 移动指针 i++j--
      • 车辆计数 count++count = 1)。
    • i = 1(60),j = 3(80):
      • 60 + 80 = 140 <= 150,可以共享一辆车。
      • 移动指针 i++j--
      • 车辆计数 count++count = 2)。
    • i = 2(70),j = 2(70):
      • i == j,说明还有一个人未分配车辆。
      • 需要单独为他分配一辆车。
      • 车辆计数 count++count = 3)。
  3. 输出结果
    • 最少需要 3 辆车。

总结

  • 时间复杂度:排序的时间复杂度为 O(n log n),双指针遍历的时间复杂度为 O(n),总时间复杂度为 O(n log n)
  • 空间复杂度:排序需要 O(n) 的额外空间(如果使用原地排序则为 O(1))。
  • 核心思想:通过排序和双指针,尽可能组合出两人组,减少车辆使用。

如果有其他问题,欢迎随时提问!

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

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

相关文章

AI在零售行业中的应用:提升顾客体验与运营效率

你知道吗&#xff1f;零售行业正悄悄发生着一场革命&#xff01;AI正在改变我们的购物方式&#xff0c;提升体验的同时&#xff0c;还让商家们的运营更高效&#xff01; 1、个性化推荐 AI通过分析你的购物历史和兴趣&#xff0c;精准推荐你喜欢的商品&#xff0c;再也不怕刷到…

人才选拔中,如何优化面试流程

在与某大型央企的深入交流中&#xff0c;随着该企业的不断壮大与业务扩张&#xff0c;对技术人才的需求急剧上升&#xff0c;尽管企业加大了招聘力度并投入了大量资源&#xff0c;但招聘成效却不尽如人意。经过项目组细致调研与访谈&#xff0c;问题的根源逐渐浮出水面&#xf…

Deepin20.9 搭建 JDK 8 开发环境(VS Code)

一、安装指令 sudo apt-get install openjdk-8-jdk 二、切换 java 版本&#xff08;可选&#xff09; sudo update-alternatives --config java sudo update-alternatives --config javac sudo update-alternatives --config javadoc三、查看 java 与 javac 的版本 jav…

可靠的人形探测,未完待续(III)

一不小心&#xff0c;此去经年啊。问大家新年快乐&#xff01; 那&#xff0c;最近在研究毫米波雷达模块嘛&#xff0c;期望用在后续的产品中&#xff0c;正好看到瑞萨的活动送板子&#xff0c;手一下没忍住。 拿了板子就得干活咯&#xff0c;我一路火花带闪电&#xff0c;开整…

论文笔记:FDTI: Fine-grained Deep Traffic Inference with Roadnet-enriched Graph

2023 PKDD 1 intro 一些交通预测下游任务对预测结果的粒度非常敏感&#xff0c;例如交通信号控制、拥堵发现和路径规划 然而&#xff0c;现有的深度学习方法主要关注粗粒度的交通数据&#xff0c;而在细粒度设置下利用深度学习方法解决交通预测任务的研究仍未被探索在细粒度设…

如何BugReport和PowerMonitor图形结合分析功耗问题

一、什么是BugReport和PowerMonitor图形结合呢&#xff1f; Battery Historian是支持PowerMonitor电流图显示的&#xff0c;具体显示效果如下&#xff1a;我们移动鼠标到PowerMonitor的电流波形时就会显示这个时刻的电流情况。 BugReport和PowerMonitor图形结合好处&#xff…

外部获取nVisual所在层级方法

Iframe嵌入nVisual&#xff0c;在iframe渲染完成之后&#xff0c;以后通过增加window.addEventListener()方法监听message事件&#xff0c;来获取nvisual当前的所在层级以及所选中的节点列表以及线缆列表。 nVisualPatrolDiagramIdList 变量是获取nVisual当前所在的层级的ID值…

UI自动化测试框架playwright--初级入门

一、背景&#xff1a;UI自动化的痛点&#xff1a; 1、设计脚本耗时&#xff1a; 需要思考要如何模拟用户的操作&#xff0c;如何触发页面的事件&#xff0c;还要思考如何设计脚本&#xff0c;定位和操作要交互的元素、路径、位置&#xff0c;再编写代码逻辑&#xff0c;往复循…

开放词汇检测新晋SOTA:地瓜机器人开源DOSOD实时检测算法

在计算机视觉领域&#xff0c;目标检测是一项关键技术&#xff0c;旨在识别图像或视频中感兴趣物体的位置与类别。传统的闭集检测长期占据主导地位&#xff0c;但近年来&#xff0c;开放词汇检测&#xff08;Open-Vocabulary Object Detection-OVOD 或者 Open-Set Object Detec…

Jupyter Notebook 安装PyTorch

1、判断当前环境 通过如下命令可以看出是Anaconda 环境 2、Anaconda 环境安装 PyTorch 2.1 要执行的命令 如果你使用的是 Anaconda 环境&#xff0c;可以使用以下命令来安装 PyTorch&#xff1a; conda install pytorch -c pytorch 2.2 执行遇到的问题&#xff1a;没有权…

如何将json字符串格式化

文章目录 如何对json字符串进行格式化显示hutool方案的示例和不足使用fastjson的方案 如何对json字符串进行格式化显示 将json字符串内容进行格式化的输出显示。本文介绍 hutool的方案和alibaba 的fastjson方案 hutool方案的示例和不足 引入依赖 <dependency><grou…

C#使用OpenTK绘制3D可拖动旋转图形三棱锥

接上篇,绘制着色矩形 C#使用OpenTK绘制一个着色矩形-CSDN博客 上一篇安装OpenTK.GLControl后,这里可以直接拖动控件GLControl 我们会发现GLControl继承于UserControl //// 摘要:// OpenGL-aware WinForms control. The WinForms designer will always call the default//…

【Git原理和使用】Git 分支管理(创建、切换、合并、删除、bug分支)

一、理解分支 我们可以把分支理解为一个分身&#xff0c;这个分身是与我们的主身是相互独立的&#xff0c;比如我们的主身在这个月学C&#xff0c;而分身在这个月学java&#xff0c;在一个月以后我们让分身与主身融合&#xff0c;这样主身在一个月内既学会了C&#xff0c;也学…

概率图模型01

机器学习中&#xff0c;线性回归、树、集成和概率图都属于典型的统计学习方法&#xff0c;概率图模型会更深入地体现出‘统计’两字 概率图模型的常见算法 概率图模型中的图 概率图模型如图主要分为两种&#xff0c;即贝叶斯网络和马尔可夫网络&#xff0c;有向图与无向图&…

解决WordPress出现Fatal error: Uncaught TypeError: ftp_nlist()致命问题

错误背景 WordPress版本&#xff1a;wordpress-6.6.2-zh_CN WooCommerce版本&#xff1a;woocommerce.9.5.1 WordPress在安装了WooCommerce插件后&#xff0c;安装的过程中没有问题&#xff0c;在安装完成后提示&#xff1a; 此站点遇到了致命错误&#xff0c;请查看您站点管理…

《HeadFirst设计模式》笔记(下)

11 代理模式 代理要做的就是控制和管理访问。 你的客户对象所做的就像是在做远程方法调用&#xff0c;但其实只是调用本地堆中的“代理”对象上的方法&#xff0c;再由代理处理所有网络通信的低层细节。 Java的RMI提供了客户辅助对象和服务辅助对象&#xff0c;为客户辅助对…

【Uniapp-Vue3】v-if条件渲染及v-show的选择对比

如果我们想让元素根据响应式变量的值进行显示或隐藏可以使用v-if或v-show 一、v-show 另一种控制显示的方法就是使用v-show&#xff0c;使用方法和v-if一样&#xff0c;为true显示&#xff0c;为false则不显示。 二、v-if v-if除了可以像v-show一样单独使用外&#xff0c;还…

【MySQL数据库】基础总结

目录 前言 一、概述 二、 SQL 1. SQL通用语法 2. SQL分类 3. DDL 3.1 数据库操作 3.2 表操作 4. DML 5. DQL 5.1 基础查询 5.2 条件查询 5.3 聚合函数 5.4 分组查询 5.5 排序查询 5.6 分页查询 6. DCL 6.1 管理用户 6.2 权限控制 三、数据类型 1. 数值类…

ubuntu/kali安装c-jwt-cracker

1.下载安装包 可以去GitHub下载解压&#xff0c;我这直接在kali克隆下来了。&#xff08;网络不好可能克隆不下来&#xff09; git clone https://github.com/brendan-rius/c-jwt-cracker.git 2.如果下载的压缩包就需要进行解压&#xff0c;克隆的直接进入目录就好了。 unzi…

H266/VVC 帧内预测中 ISP 技术

帧内子划分 ISP ISP 技术是在 JVET-2002-v3 提案中详细介绍其原理&#xff0c;在 VTM8 中完整展示算法。ISP是线基内预测&#xff08;LIP&#xff09;模式的更新版本&#xff0c;它改善了原始方法在编码增益和复杂度之间的权衡&#xff0c;ISP 算法的核心原理就是利用较近的像…