【2024年华为OD机试】 (C卷,100分)- 免单统计(Java JS PythonC/C++)

news2025/1/18 2:54:08

在这里插入图片描述

一、问题描述

题目描述

华为商城举办了一个促销活动,如果某顾客是某一秒内最早时刻下单的顾客(可能是多个人),则可以获取免单。

请你编程计算有多少顾客可以获取免单。

输入描述

输入为 n 行数据,每一行表示一位顾客的下单时间

以(年-月-日时-分-秒.毫秒) yyyy-MM-ddHH:mm:ss.fff 形式给出。

0<n<50000
2000<yyyy<2020
0<MM<=12
0<dd<=28
0<=HH<=23
0<=mm<=59
0<=ss<=59
0<=fff<=999

所有输入保证合法。

输出描述

输出一个整数,表示有多少顾客可以获取免单。

用例

输入

3
2019-01-01 00:00:00.001
2019-01-01 00:00:00.002
2019-01-01 00:00:00.003

输出

1

说明
样例 1 中,三个订单都是同一秒内下单,只有第一个订单最早下单,可以免单。

输入

3
2019-01-01 08:59:00.123
2019-01-01 08:59:00.123
2018-12-28 10:08:00.999

输出

3

说明
样例 2 中,前两个订单是同一秒内同一时刻(也是最早)下单,都可免单,第三个订单是当前秒内唯一一个订单(也是最早),也可免单。

输入

5
2019-01-01 00:00:00.004
2019-01-01 00:00:00.004
2019-01-01 00:00:01.006
2019-01-01 00:00:01.006
2019-01-01 00:00:01.005

输出

3

说明
样例 3 中,前两个订单是同一秒内同一时刻(也是最早)下单,第三第四个订单不是当前秒内最早下单,不可免单,第五个订单可以免单。

题目解析

考察数组排序以及字符串操作。

问题分析

要解决这个问题,我们需要确定每个秒内最早下单的顾客数量。关键步骤如下:

  1. 解析时间字符串:将输入的时间字符串解析为可以比较的时间格式。这通常涉及到将字符串分割成年、月、日、时、分、秒和毫秒等部分,并转换为适当的数据类型(如整数)。

  2. 排序:将所有时间按先后顺序排序。这可以通过使用标准的排序算法实现,如快速排序或归并排序,这些算法在大多数编程语言的标准库中都有实现。

  3. 识别最早下单的顾客:遍历排序后的时间列表,识别每一秒内的第一个订单。如果多个订单在同一秒且同一毫秒发生,则这些订单都被认为是该秒的最早订单。

算法逻辑
  1. 读取和解析输入:将输入的时间字符串存储在一个列表中,并解析为时间对象或结构,以便于比较。
  2. 排序:对解析后的时间列表进行排序。
  3. 遍历排序后的时间列表
    • 初始化一个变量 last_second 来记录上一个处理的时间的秒部分,初始设为一个不可能的值(如 -1)。
    • 初始化一个计数器 exempt_count 来记录可以免单的顾客数量。
    • 遍历排序后的时间列表,对于每个时间:
      • 提取当前时间的秒部分。
      • 如果当前时间的秒部分与 last_second 不同,说明进入了新的一秒,将 last_second 更新为当前秒,并增加 exempt_count
      • 如果当前时间的秒部分与 last_second 相同,检查毫秒部分,如果与上一个订单的毫秒相同,也增加 exempt_count
  4. 输出结果:输出 exempt_count 作为结果。

这种方法确保了我们能够准确地识别每一秒内的最早订单,从而计算出可以免单的顾客数量。时间复杂度主要由排序步骤决定,为 O(n log n),其中 n 是订单数量。

二、JavaScript算法源码

以下是 JavaScript 代码的详细中文注释和讲解:


JavaScript 代码

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");  // 引入 readline 模块,用于读取控制台输入

// 创建 readline 接口
const rl = readline.createInterface({
  input: process.stdin,  // 输入流为标准输入
  output: process.stdout,  // 输出流为标准输出
});

const lines = [];  // 用于存储输入的每一行数据
let n;  // 用于存储输入的第一行数据(表示后续输入的行数)

// 监听 'line' 事件,每次读取一行输入
rl.on("line", (line) => {
  lines.push(line);  // 将当前行数据存入 lines 数组

  // 如果 lines 数组长度为 1,说明读取到第一行数据(n 的值)
  if (lines.length == 1) {
    n = lines[0] - 0;  // 将第一行数据转换为数字并赋值给 n
  }

  // 如果 n 已定义,且 lines 数组长度为 n + 1,说明所有输入已读取完毕
  if (n && lines.length == n + 1) {
    lines.shift();  // 移除 lines 数组中的第一行数据(n 的值)
    console.log(getResult(lines));  // 调用 getResult 函数并输出结果
    lines.length = 0;  // 清空 lines 数组,为下一次输入做准备
  }
});

// 算法实现
function getResult(arr) {
  // 对数组进行排序并反转(从大到小排序)
  arr.sort().reverse();

  // 初始化栈,将数组的最后一个元素压入栈中
  const stack = [arr.pop()];

  // 遍历数组中的剩余元素
  while (arr.length) {
    const time = arr.pop();  // 取出数组的最后一个元素
    const top = stack.at(-1);  // 获取栈顶元素

    // 判断当前元素是否需要压入栈中
    if (top === time || top.substring(0, 19) !== time.substring(0, 19)) {
      stack.push(time);  // 如果满足条件,将当前元素压入栈中
    }
  }

  // 返回栈的长度
  return stack.length;
}

代码讲解

1. 输入处理
  • readline 模块
    • 用于读取控制台输入。
  • rl.on("line", (line) => {...})
    • 监听 line 事件,每次读取一行输入。
    • 将每一行数据存入 lines 数组。
  • n 的作用
    • 第一行数据表示后续输入的行数。
    • lines 数组长度为 n + 1 时,说明所有输入已读取完毕。
  • lines.shift()
    • 移除 lines 数组中的第一行数据(n 的值),保留后续数据。
2. 算法实现
  • getResult 函数
    • 参数 arr 是输入的数组。
    • 排序与反转
      • 使用 arr.sort().reverse() 对数组进行从大到小排序。
    • 栈的使用
      • 初始化栈 stack,将数组的最后一个元素压入栈中。
      • 遍历数组中的剩余元素:
        • 取出数组的最后一个元素 time
        • 获取栈顶元素 top
        • 判断当前元素是否需要压入栈中:
          • 如果 top === timetop.substring(0, 19) !== time.substring(0, 19),则将当前元素压入栈中。
    • 返回结果
      • 返回栈的长度 stack.length
3. 输出结果
  • 使用 console.log 输出栈的长度。

示例运行

输入 1
3
2023-10-01 12:00:00
2023-10-01 12:00:01
2023-10-01 12:00:02
  • 输出
    3
    
  • 解释
    • 输入的时间数组为 ["2023-10-01 12:00:00", "2023-10-01 12:00:01", "2023-10-01 12:00:02"]
    • 每个时间的前 19 个字符都不同,因此栈的长度为 3
输入 2
4
2023-10-01 12:00:00
2023-10-01 12:00:00
2023-10-01 12:00:01
2023-10-01 12:00:01
  • 输出
    2
    
  • 解释
    • 输入的时间数组为 ["2023-10-01 12:00:00", "2023-10-01 12:00:00", "2023-10-01 12:00:01", "2023-10-01 12:00:01"]
    • 前两个时间相同,后两个时间相同,因此栈的长度为 2

总结

  • 该代码实现了 统计时间数组中不同时间段的个数 的功能。
  • 通过排序、栈和字符串截取操作,判断时间是否需要压入栈中。
  • 时间复杂度为 O(n log n),其中 n 是数组的长度。
  • 如果有其他问题,欢迎继续提问!

三、Java算法源码

以下是 Java 代码的详细中文注释和讲解:


Java 代码

import java.util.Arrays;  // 引入 Arrays 工具类,用于数组排序
import java.util.LinkedList;  // 引入 LinkedList,用于实现栈
import java.util.Scanner;  // 引入 Scanner,用于读取控制台输入

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

    int n = Integer.parseInt(sc.nextLine());  // 读取第一行输入,转换为整数 n(表示后续输入的行数)

    String[] arr = new String[n];  // 创建长度为 n 的字符串数组,用于存储后续输入的时间数据
    for (int i = 0; i < n; i++) {
      arr[i] = sc.nextLine();  // 读取每一行输入,存入数组 arr
    }

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

  // 算法入口
  public static int getResult(String[] arr) {
    Arrays.sort(arr);  // 对数组 arr 进行排序(默认按字典序升序)

    LinkedList<String> stack = new LinkedList<>();  // 创建 LinkedList 作为栈
    stack.add(arr[0]);  // 将数组的第一个元素压入栈中

    int i = 1;  // 初始化索引 i,从数组的第二个元素开始遍历
    while (i < arr.length) {
      String time = arr[i++];  // 取出数组的当前元素,并将索引 i 加 1
      String top = stack.getLast();  // 获取栈顶元素

      // 判断当前元素是否需要压入栈中
      if (top.equals(time) || !top.substring(0, 19).equals(time.substring(0, 19))) {
        stack.add(time);  // 如果满足条件,将当前元素压入栈中
      }
    }

    return stack.size();  // 返回栈的长度
  }
}

代码讲解

1. 输入处理
  • Scanner
    • 用于读取控制台输入。
  • n
    • 第一行输入表示后续输入的行数,转换为整数 n
  • arr
    • 创建长度为 n 的字符串数组,用于存储后续输入的时间数据。
  • for 循环
    • 读取每一行输入,存入数组 arr
2. 算法实现
  • getResult 方法
    • 参数 arr 是输入的字符串数组。
    • 排序
      • 使用 Arrays.sort(arr) 对数组进行排序(默认按字典序升序)。
    • 栈的使用
      • 创建 LinkedList 作为栈。
      • 将数组的第一个元素压入栈中。
      • 遍历数组中的剩余元素:
        • 取出当前元素 time
        • 获取栈顶元素 top
        • 判断当前元素是否需要压入栈中:
          • 如果 top.equals(time)top.substring(0, 19) 不等于 time.substring(0, 19),则将当前元素压入栈中。
    • 返回结果
      • 返回栈的长度 stack.size()
3. 输出结果
  • 使用 System.out.println 输出栈的长度。

示例运行

输入 1
3
2023-10-01 12:00:00
2023-10-01 12:00:01
2023-10-01 12:00:02
  • 输出
    3
    
  • 解释
    • 输入的时间数组为 ["2023-10-01 12:00:00", "2023-10-01 12:00:01", "2023-10-01 12:00:02"]
    • 每个时间的前 19 个字符都不同,因此栈的长度为 3
输入 2
4
2023-10-01 12:00:00
2023-10-01 12:00:00
2023-10-01 12:00:01
2023-10-01 12:00:01
  • 输出
    2
    
  • 解释
    • 输入的时间数组为 ["2023-10-01 12:00:00", "2023-10-01 12:00:00", "2023-10-01 12:00:01", "2023-10-01 12:00:01"]
    • 前两个时间相同,后两个时间相同,因此栈的长度为 2

总结

  • 该代码实现了 统计时间数组中不同时间段的个数 的功能。
  • 通过排序、栈和字符串截取操作,判断时间是否需要压入栈中。
  • 时间复杂度为 O(n log n),其中 n 是数组的长度。
  • 如果有其他问题,欢迎继续提问!

四、Python算法源码

以下是 Python 代码的详细中文注释和讲解:


Python 代码

# 输入获取
n = int(input())  # 读取第一行输入,转换为整数 n(表示后续输入的行数)
arr = [input() for _ in range(n)]  # 读取后续的 n 行输入,存入列表 arr

# 算法入口
def getResult():
    arr.sort(reverse=True)  # 对列表 arr 进行降序排序
    stack = [arr.pop()]  # 初始化栈,将 arr 的最后一个元素压入栈中

    while len(arr) > 0:  # 当 arr 不为空时,循环处理
        time = arr.pop()  # 取出 arr 的最后一个元素
        top = stack[-1]  # 获取栈顶元素

        # 判断当前元素是否需要压入栈中
        if top == time or top[:19] != time[:19]:
            stack.append(time)  # 如果满足条件,将当前元素压入栈中

    return len(stack)  # 返回栈的长度

# 算法调用
print(getResult())  # 调用 getResult 函数并输出结果

代码讲解

1. 输入处理
  • n = int(input())
    • 读取第一行输入,转换为整数 n,表示后续输入的行数。
  • arr = [input() for _ in range(n)]
    • 使用列表推导式读取后续的 n 行输入,存入列表 arr
2. 算法实现
  • getResult 函数
    • 排序
      • 使用 arr.sort(reverse=True) 对列表 arr 进行降序排序。
    • 栈的使用
      • 初始化栈 stack,将 arr 的最后一个元素压入栈中。
      • 使用 while 循环遍历 arr 中的剩余元素:
        • 取出 arr 的最后一个元素 time
        • 获取栈顶元素 top
        • 判断当前元素是否需要压入栈中:
          • 如果 top == timetop[:19] != time[:19],则将当前元素压入栈中。
    • 返回结果
      • 返回栈的长度 len(stack)
3. 输出结果
  • 使用 print(getResult()) 输出栈的长度。

示例运行

输入 1
3
2023-10-01 12:00:00
2023-10-01 12:00:01
2023-10-01 12:00:02
  • 输出
    3
    
  • 解释
    • 输入的时间列表为 ["2023-10-01 12:00:00", "2023-10-01 12:00:01", "2023-10-01 12:00:02"]
    • 每个时间的前 19 个字符都不同,因此栈的长度为 3
输入 2
4
2023-10-01 12:00:00
2023-10-01 12:00:00
2023-10-01 12:00:01
2023-10-01 12:00:01
  • 输出
    2
    
  • 解释
    • 输入的时间列表为 ["2023-10-01 12:00:00", "2023-10-01 12:00:00", "2023-10-01 12:00:01", "2023-10-01 12:00:01"]
    • 前两个时间相同,后两个时间相同,因此栈的长度为 2

总结

  • 该代码实现了 统计时间列表中不同时间段的个数 的功能。
  • 通过排序、栈和字符串截取操作,判断时间是否需要压入栈中。
  • 时间复杂度为 O(n log n),其中 n 是列表的长度。
  • 如果有其他问题,欢迎继续提问!

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

以下是 C++C 语言的代码实现,包含详细的中文注释和代码讲解。


C++ 代码实现

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

// 算法入口
int getResult(vector<string>& arr) {
    // 对时间字符串数组进行排序
    sort(arr.begin(), arr.end());

    // 使用栈存储不同时间段的时间字符串
    vector<string> stack;
    stack.push_back(arr[0]); // 将第一个时间字符串压入栈中

    int i = 1;
    while (i < arr.size()) {
        string time = arr[i++]; // 取出当前时间字符串
        string top = stack.back(); // 获取栈顶时间字符串

        // 判断当前时间字符串是否需要压入栈中
        if (top == time || top.substr(0, 19) != time.substr(0, 19)) {
            stack.push_back(time); // 如果满足条件,压入栈中
        }
    }

    return stack.size(); // 返回栈的长度
}

// 主函数
int main() {
    int n;
    cin >> n; // 读取时间字符串的数量
    cin.ignore(); // 忽略换行符

    vector<string> arr(n); // 存储时间字符串的数组
    for (int i = 0; i < n; i++) {
        getline(cin, arr[i]); // 读取每一行时间字符串
    }

    cout << getResult(arr) << endl; // 调用算法并输出结果
    return 0;
}

C++ 代码讲解

  1. 输入处理

    • 使用 cin 读取时间字符串的数量 n
    • 使用 getline 读取每一行时间字符串,并存储到 vector<string> 中。
  2. 排序

    • 使用 sort 对时间字符串数组进行排序,确保时间按字典序排列。
  3. 栈的使用

    • 初始化一个栈 stack,将第一个时间字符串压入栈中。
    • 遍历剩余的时间字符串:
      • 取出当前时间字符串 time
      • 获取栈顶时间字符串 top
      • 判断当前时间字符串是否需要压入栈中:
        • 如果 top == timetop.substr(0, 19) != time.substr(0, 19),则将当前时间字符串压入栈中。
  4. 输出结果

    • 返回栈的长度 stack.size(),并输出结果。

C 语言代码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 比较函数,用于排序
int compare(const void* a, const void* b) {
    return strcmp(*(const char**)a, *(const char**)b);
}

// 算法入口
int getResult(char** arr, int n) {
    // 对时间字符串数组进行排序
    qsort(arr, n, sizeof(char*), compare);

    // 使用栈存储不同时间段的时间字符串
    char** stack = (char**)malloc(n * sizeof(char*));
    int stackSize = 0;
    stack[stackSize++] = arr[0]; // 将第一个时间字符串压入栈中

    int i = 1;
    while (i < n) {
        char* time = arr[i++]; // 取出当前时间字符串
        char* top = stack[stackSize - 1]; // 获取栈顶时间字符串

        // 判断当前时间字符串是否需要压入栈中
        if (strcmp(top, time) == 0 || strncmp(top, time, 19) != 0) {
            stack[stackSize++] = time; // 如果满足条件,压入栈中
        }
    }

    int result = stackSize; // 栈的长度即为结果
    free(stack); // 释放栈的内存
    return result;
}

// 主函数
int main() {
    int n;
    scanf("%d", &n); // 读取时间字符串的数量
    getchar(); // 忽略换行符

    char** arr = (char**)malloc(n * sizeof(char*)); // 存储时间字符串的数组
    for (int i = 0; i < n; i++) {
        arr[i] = (char*)malloc(20 * sizeof(char)); // 为每个时间字符串分配内存
        fgets(arr[i], 20, stdin); // 读取每一行时间字符串
        arr[i][strcspn(arr[i], "\n")] = '\0'; // 去除换行符
    }

    printf("%d\n", getResult(arr, n)); // 调用算法并输出结果

    // 释放内存
    for (int i = 0; i < n; i++) {
        free(arr[i]);
    }
    free(arr);

    return 0;
}

C 语言代码讲解

  1. 输入处理

    • 使用 scanf 读取时间字符串的数量 n
    • 使用 fgets 读取每一行时间字符串,并存储到 char** 数组中。
    • 使用 strcspn 去除每行末尾的换行符。
  2. 排序

    • 使用 qsort 对时间字符串数组进行排序,排序依据是 strcmp 函数。
  3. 栈的使用

    • 初始化一个栈 stack,将第一个时间字符串压入栈中。
    • 遍历剩余的时间字符串:
      • 取出当前时间字符串 time
      • 获取栈顶时间字符串 top
      • 判断当前时间字符串是否需要压入栈中:
        • 如果 strcmp(top, time) == 0strncmp(top, time, 19) != 0,则将当前时间字符串压入栈中。
  4. 输出结果

    • 返回栈的长度 stackSize,并输出结果。
  5. 内存管理

    • 使用 malloc 为时间字符串数组和栈分配内存。
    • 使用 free 释放分配的内存,避免内存泄漏。

总结

  • C++C 语言的实现思路一致,均通过排序和栈来统计不同时间段的个数。
  • C++ 使用了 vectorstring,代码更简洁。
  • C 语言需要手动管理内存,代码稍显复杂,但更贴近底层实现。
  • 如果有其他问题,欢迎继续提问!

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

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

相关文章

python中数据可视化库(Matplotlib)

python中数据可视化库&#xff08;Matplotlib&#xff09; 安装 Matplotlib基本使用绘图类型示例散点图 (Scatter Plot)柱状图 (Bar Chart)饼图 (Pie Chart)直方图 (Histogram) 自定义图表样式多面板图表 (Subplots)3D 图表 Matplotlib 是 Python 中一个非常流行的绘图库&#…

某国际大型超市电商销售数据分析和可视化

完整源码项目包获取→点击文章末尾名片&#xff01; 本作品将从人、货、场三个维度&#xff0c;即客户维度、产品维度、区域维度&#xff08;补充时间维度与其他维度&#xff09;对某国际大型超市的销售情况进行数据分析和可视化报告展示&#xff0c;从而为该超市在弄清用户消费…

DETR论文阅读

1. 动机 传统的目标检测任务需要大量的人工先验知识&#xff0c;例如预定义的先验anchor&#xff0c;NMS后处理策略等。这些人工先验知识引入了很多人为因素&#xff0c;且较难处理。如果能够端到端到直接生成目标检测结果&#xff0c;将会使问题变得很优雅。 2. 主要贡献 提…

工业视觉2-相机选型

工业视觉2-相机选型 一、按芯片类型二、按传感器结构特征三、按扫描方式四、按分辨率大小五、按输出信号六、按输出色彩接口类型 这张图片对工业相机的分类方式进行了总结&#xff0c;具体如下&#xff1a; 一、按芯片类型 CCD相机&#xff1a;采用电荷耦合器件&#xff08;CC…

《机器学习》——TF-IDF(关键词提取)

文章目录 TF-IDF简介TF-IDF应用场景TF-IDF模型模型参数主要参数 TF-IDF实例实例步骤导入数据和模块处理数据处理文章开头和分卷处理将各卷内容存储到数据帧jieba分词和去停用词处理 计算 TF-IDF 并找出核心关键词 TF-IDF简介 TF - IDF&#xff08;Term Frequency - Inverse Do…

LabVIEW与WPS文件格式的兼容性

LabVIEW 本身并不原生支持将文件直接保存为 WPS 格式&#xff08;如 WPS 文档或表格&#xff09;。然而&#xff0c;可以通过几种间接的方式实现这一目标&#xff0c;确保您能将 LabVIEW 中的数据或报告转换为 WPS 可兼容的格式。以下是几种常见的解决方案&#xff1a; ​ 导出…

CV 图像处理基础笔记大全(超全版哦~)!!!

一、图像的数字化表示 像素 数字图像由众多像素组成&#xff0c;是图像的基本构成单位。在灰度图像中&#xff0c;一个像素用一个数值表示其亮度&#xff0c;通常 8 位存储&#xff0c;取值范围 0 - 255&#xff0c;0 为纯黑&#xff0c;255 为纯白。例如&#xff0c;一幅简单的…

【JavaScript】比较运算符的运用、定义函数、if(){}...esle{} 语句

比较运算符 !><> < 自定义函数&#xff1a; function 函数名&#xff08;&#xff09;{ } 判断语句&#xff1a; if(判断){ }else if(判断){ 。。。。。。 }else{ } 代码示例&#xff1a; <!DOCTYPE html> <html> <head><meta charset&quo…

centos 7 Mysql服务

将此服务器配置为 MySQL 服务器&#xff0c;创建数据库为 hubeidatabase&#xff0c;将登录的root密码设置为Qwer1234。在库中创建表为 mytable&#xff0c;在表中创建 2 个用户&#xff0c;分别为&#xff08;xiaoming&#xff0c;2010-4-1&#xff0c;女&#xff0c;male&…

【正则表达式】从0开始学习正则表达式

正则表达式&#xff08;英语&#xff1a;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09; 一、推荐学习网站 正则表达式 – 语法 | 菜鸟教程 正则表达式30分钟入门教程 | 菜鸟教程 编程胶囊-打造学习编程的最好系统 二、必知必记 2.1 元字符…

【0x3D】HCI_Remote_Host_Supported_Features_Notification事件详解

目录 一、事件概述 二、事件格式及参数说明 2.1. HCI_Remote_Host_Supported_Features_Notification事件格式 2.2. BD_ADDR 2.3. Remote_Host_Supported_Features 三、事件作用 3.1. 设备特性沟通与理解 3.2. 功能协商与性能优化 3.3. 设备管理与配置更新 四、应用场…

天机学堂笔记1-网关拦截器获取用户信息保存到ThreadLocal

FeignClient(contextId "course", value "course-service") public interface CourseClient {/*** 根据老师id列表获取老师出题数据和讲课数据* param teacherIds 老师id列表* return 老师id和老师对应的出题数和教课数*/GetMapping("/course/infoB…

OpenAI推出首个AI Agent!日常事项自动化处理!

2025 年1月15日&#xff0c;OpenAI 正式宣布推出一项名为Tasks的测试版功能 。 该功能可以根据你的需求内容和时间实现自动化处理。比方说&#xff0c;你可以设置每天早晨 7 点获取天气预报&#xff0c;或定时提醒遛狗等日常事项。 看到这里&#xff0c;有没有一种熟悉的感觉&a…

关于Nvidia显卡在windows系统下存在部分软件屏闪/闪烁问题与解决方法

问题描述 部分软件GUI在使用时一直闪烁/闪屏&#xff0c;包括拖动侧栏与切换子页面时会留下残影。本人遇到发生该现象的桌面应用包括且不限于docker desktop, meta quest link, Vortex, Tabby Terminal等。 本人环境&#xff1a; 操作系统&#xff1a;windows11 显卡&#xf…

vue2配置跨域后请求的是本机

这个我来说明一下&#xff0c;因为我们公司的后端设置解决了跨域问题&#xff0c;所以我有很久没有看相关的内容了&#xff0c;然后昨天请求了需要跨域的接口&#xff0c;请求半天一直不对&#xff0c;浏览器显示的是本机地址&#xff0c;我以为是自己配置错了&#xff0c;后面…

[Qualcomm]Qualcomm MDM9607 SDK代码下载操作说明

登录Qualcomm CreatePoing Qualcomm CreatePointhttps://createpoint.qti.qua

ORB-SLAM2源码学习: Frame.cc: cv::Mat Frame::UnprojectStereo将某个特征点反投影到三维世界坐标系中

前言 这个函数是在跟踪线程中更新上一帧的函数中被调用。 1.函数声明 cv::Mat Frame::UnprojectStereo(const int &i) 2.函数定义 1.获取这个特征点的深度值。 const float z mvDepth[i];深度值由双目或 RGB-D 传感器获取。 在双目情况下&#xff0c;这个深度来自…

基于Piquasso的光量子计算机的模拟与编程

一、引言 在科技飞速发展的当下,量子计算作为前沿领域,正以前所未有的态势蓬勃崛起。它凭借独特的量子力学原理,为解决诸多经典计算难以攻克的复杂问题提供了全新路径。从优化物流配送网络,以实现资源高效调配,到药物分子结构的精准模拟,加速新药研发进程;从金融风险的…

本地部署Web-Check网站检测与分析利器并实现远程访问实时监测

文章目录 前言1.关于Web-Check2.功能特点3.安装Docker4.创建并启动Web-Check容器5.本地访问测试6.公网远程访问本地Web-Check7.内网穿透工具安装8.创建远程连接公网地址9.使用固定公网地址远程访问 前言 本文我们将详细介绍如何在Ubuntu系统上使用Docker部署Web-Check&#xf…

电子杂志制作平台哪个好

​作为一个热爱分享的人&#xff0c;我试过了好几个平台&#xff0c;终于找到了几款比较好用得电子杂志制作平台&#xff0c;都是操作界面很简洁&#xff0c;上手非常快的工具。 FLBOOK:这是一款在线制作H5电子画册软件&#xff0c;提供了各种类型的模板&#xff0c;可支持添加…