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

在这里插入图片描述

一、问题描述

题目描述

部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐两人,最大载重 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,人数 nconst 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 和人数 nint 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 += 1return 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 和人数 nvector<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.rhkb.cn/news/249.html

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

相关文章

网络安全-kail linux 网络配置(基础篇)

一、网络配置 1.查看网络IP地址&#xff0c; 我的kail&#xff1a;192.168.15.128 使用ifconfig查看kail网络连接情况&#xff0c;ip地址情况 又复制了一台kail计算机的IP地址。 再看一下windows本机&#xff1a;使用ipconfig进行查看&#xff1a; 再看一下虚拟机上的win7I…

shell基础使用及vim的常用快捷键

一、shell简介 参考博文1 参考博文2——shell语法及应用 参考博文3——vi的使用 在linux中有很多类型的shell&#xff0c;不同的shell具备不同的功能&#xff0c;shell还决定了脚本中函数的语法&#xff0c;Linux中默认的shell是 / b in/ b a s h &#xff0c;流行的shell…

【LeetCode】:删除回文子数组【困难】

class Solution { public:// 思考:能否用滚动数组进行优化int minimumMoves(vector<int>& arr) {// 定义状态dp[i][j]为i-j的最小步数int n arr.size();vector<vector<int>> dp(n, vector<int>(n, 1e9 7));// 可以把这 1 次理解为一种 最小操作单…

极大似然估计笔记

一、原理 我们拿到样本数据需要进行有参估计时&#xff0c;需要假设样本的服从某一分布&#xff0c;因此通过给定某种样本的分布&#xff0c;利用样本来拟合分布参数的过程就是极大似然法。给定一个概率分布 D&#xff0c;假定概率密度函数为 f &#xff0c;以及一个分布参数 θ…

计算机网络(二)——物理层和数据链路层

一、物理层 1.作用 实现相信计算机节点之间比特流的透明传输&#xff0c;尽可能屏蔽具体传输介质和物理设备的差异。 2.数据传输单位 比特。 3.相关通信概念 ①信源和信宿&#xff1a;即信号的发送方和接收方。 ②数据&#xff1a;即信息的实体&#xff0c;比如图像、视频等&am…

《自动驾驶与机器人中的SLAM技术》ch1:自动驾驶

目录 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 L2 在技术实现上会更倾向于实时感知&#xff0c;乃至可以使用感知结果直接构建鸟瞰图&#xff08;bird eye view, BEV&#xff09;&#xff0c;而 L4 则依赖离线地图。 高精地…

城市生命线安全综合监管平台

【落地产品&#xff0c;有需要可留言联系&#xff0c;支持项目合作或源码合作】 一、建设背景 以关于城市安全的重要论述为建设纲要&#xff0c;聚焦城市安全重点领域&#xff0c;围绕燃气爆炸、城市内涝、地下管线交互风险、第三方施工破坏、供水爆管、桥梁坍塌、道路塌陷七…

unity 播放 序列帧图片 动画

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、方法一&#xff1a;代码控制播放序列帧1、设置图片属性2、创建Image组件3、简单的代码控制4、挂载代码并赋值 二、方法二&#xff1a;直接使用1.Image上添加…

excel VBA 基础教程

这里写目录标题 快捷键选择所有有内容的地方 调试VBA录制宏&#xff0c;打开VBA开发工具录制宏,相当于excel自动写代码&#xff08;两个表格内容完全一致才可以&#xff09; 查看宏代码保持含有宏程序的文件xlsm后缀&#xff08;注意很容易有病毒&#xff09;宏文件安全设置 使…

深度学习与计算机视觉 (博士)

文章目录 零、计算机视觉概述一、深度学习相关概念1.学习率η2.batchsize和epoch3.端到端(End-to-End)、序列到序列(Seq-to-Seq)4.消融实验5.学习方式6.监督学习的方式(1)有监督学习(2)强监督学习(3)弱监督学习(4)半监督学习(5)自监督学习(6)无监督学习(7)总结&#xff1a;不同…

《安富莱嵌入式周报》第348期:开源低功耗测试仪,开源创意万用表,续航100-300小时,开源PCB电机,自制shell和网络协议栈,开源水培自动化系统

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1Tzr9Y3EQ7/ 《安富莱嵌入式周报》第348期&#xff1a;开源低功…

Linux通过ISCSI连接StarWind共享存储

文章目录 StarWind安装配置StarWind ISCSI添加StarWind Server添加Target 添加Device存储盘Linux通过ISCSI连接StarWind共享存储Linux客户端安装ISCSI搜索服务端ISCSI Target连接服务端ISCSI共享存储Linux客户端查看共享存储 StarWind安装 配置StarWind ISCSI 添加StarWind Se…

unity学习12:地图相关的一些基础2, 增加layer种草种树

目录 参考学习 1 地图设置 1.1 上次制作的地图&#xff0c;稍微加点地形完善下. 1.2 调整下camera 1.3 摄像机camera的移动速度 1.4 地图属性&#xff0c;terrain settings 1.5 但是&#xff0c;地图看起来像沙漠一样&#xff0c;很单调 2 paint terrain / paint textu…

Uniapp Android 本地离线打包(详细流程)

一、简介 App 离线 SDK 暂时不支持 Kotlin&#xff0c;未来不清楚。 uniapp 提供了 云打包 与 本地打包 两种方案&#xff0c;云打包 需要排队且还有次数限制&#xff0c;本地打包 则就没有这些限制&#xff0c;而且会 本地打包 对开发 原生插件 有很大的帮助。 细节&#x…

JavaEE之线程池

前面我们了解了多个任务可以通过创建多个线程去处理&#xff0c;达到节约时间的效果&#xff0c;但是每一次的线程创建和销毁也是会消耗计算机资源的&#xff0c;那么我们是否可以将线程进阶一下&#xff0c;让消耗计算机的资源尽可能缩小呢&#xff1f;线程池可以达到此效果&a…

【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. 数值类…

记录一次电脑被入侵用来挖矿的过程(Trojan、Miner、Hack、turminoob)

文章目录 0、总结1、背景2、端倪3、有个微软的系统更新&#xff0c;就想着更新看看&#xff08;能否冲掉问题&#xff09;4、更新没成功&#xff0c;自动重启电脑5、风险文件&#xff08;好家伙命名还挺规范&#xff0c;一看名字就知道出问题了&#xff09;6、开机有一些注册表…

请求方式(基于注解实现)

1.编写web.xml文件配置启动信息 <!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app><display-name>Archetype Created Web Application</di…

golang单元测试

单元测试 类型前缀签名用途测试函数Testfunc TestXxx(t *testing.T)功能测试、验证逻辑正确性基准函数Benchmarkfunc BenchmarkXxx(b *testing.B)性能测试、效率评估示例函数Examplefunc ExampleXxx()用法展示、生成文档 testing框架 文件名以_test.go结尾&#xff0c;放在与…

【2024年华为OD机试】 (A卷,100分)- 总最快检测效率(Java JS PythonC/C++)

一、问题描述 题目描述 在系统、网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查。 每名采样员的效率不同&#xff0c;采样效率为 N 人/小时。由于外界变化&#xff0c;采样员的效率会以 M 人/小时为粒度发生变化&#xff0c;M 为采样效率浮动粒度&#xf…