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

2025.05.17淘天机考笔试真题第三题

📌 点击直达笔试专栏 👉《大厂笔试突围》

💻 春秋招笔试突围在线OJ 👉 笔试突围OJ

03. 奇偶平衡树分割问题

问题描述

K小姐是一位园林设计师,她设计了一个由多个花坛组成的树形公园。每个花坛中种植了不同数量的花,数量由整数表示。K小姐发现,当公园被分割成多个独立区域时,如果每个区域中的花朵总数都是偶数,游客会感到更加和谐。

现在,K小姐想要通过关闭若干条连接花坛的小路(即删除树的边),将公园分割成若干个独立区域(连通块),使得每个区域内的花朵总数都是偶数。

请你求出,对于每个 k ( 1 ≤ k ≤ n − 1 ) k (1 \leq k \leq n-1) k(1kn1),关闭 k k k 条小路后得到的 k + 1 k+1 k+1 个独立区域满足条件的方案数。如果不存在满足条件的方案,对应的答案记为 0 0 0

注意:两种关闭小路的方案若关闭的路径集合不同,则视为不同的方案。

输入格式

第一行给出一个整数 n n n,表示花坛的数量。

第二行给出 n n n 个整数 W 1 , W 2 , . . . , W n W_1, W_2, ..., W_n W1,W2,...,Wn,其中 W i W_i Wi 表示第 i i i 个花坛中的花朵数量。

接下来 n − 1 n-1 n1 行,每行包含两个整数 u u u v ( 1 ≤ u , v ≤ n , u ≠ v ) v (1 \leq u, v \leq n, u \neq v) v(1u,vn,u=v),表示花坛 u u u 与花坛 v v v 之间有一条小路,保证给定的图构成一棵树。

输出格式

输出 n − 1 n-1 n1 个数,第 i i i 个数表示关闭 i i i 条小路后满足条件的方案数。由于答案可能非常大,请对答案取模 1 0 9 + 7 10^9+7 109+7 后输出。

样例输入

5
1 2 3 4 4
1 2
1 3
2 4
2 5

样例输出

3 3 1 0
样例解释说明
样例1 k = 1 k=1 k=1 时,关闭方案有 {(1,2)}, {(2,4)}, {(2,5)},共 3 种。
k = 2 k=2 k=2 时,关闭方案有 {(1,2), (2,4)}, {(1,2), (2,5)}, {(2,5), (2,4)},共 3 种。
k = 3 k=3 k=3 时,关闭方案有 {(1,2), (2,4), (2,5)},共 1 种。
k = 4 k=4 k=4 时,没有满足条件的方案。

数据范围

  • 2 ≤ n ≤ 1 0 5 2 \leq n \leq 10^5 2n105
  • 1 ≤ W i ≤ 1 0 9 1 \leq W_i \leq 10^9 1Wi109
  • 1 ≤ u , v ≤ n 1 \leq u, v \leq n 1u,vn

题解

这道题乍看复杂,但仔细分析后会发现其中的数学规律和解决方案。

首先,我们需要理解什么情况下一个连通块的花朵数能够为偶数。显然,如果一个连通块内奇数花坛的个数为偶数,那么总花朵数一定是偶数(偶数+偶数=偶数,奇数+奇数=偶数)。

我们的目标是通过删除边,将树分成多个连通块,使得每个连通块内的奇数花坛数量都是偶数。那么问题转化为:找出那些删除后能让两侧奇数花坛数量都是偶数的边。

关键观察:一个连通块内奇数花坛数量为奇数时,无论如何分割,都无法使所有子连通块内的奇数花坛数量都为偶数。因为奇数个奇数,无论如何分组,总有一组含有奇数个奇数。

因此,如果整棵树中奇数花坛的总数为奇数,则无解。

接下来,我们定义一个边是"好边",如果删除这条边后,两个连通块内的奇数花坛数量都是偶数。一条边是好边当且仅当这条边连接的子树内奇数花坛数量为偶数。

如果好边数量为g,那么要删除k条边使所有连通块花朵数为偶数,就相当于从g条好边中选择k条,即组合数C(g,k)。

具体算法如下:

  1. 统计整棵树中奇数花坛的总数,如果为奇数,则无解。
  2. 通过DFS计算每个子树中奇数花坛的数量。
  3. 检查每条边,如果删除后两侧连通块中奇数花坛数量都是偶数,则该边为好边。
  4. 计算从g条好边中选k条的组合数C(g,k),即为答案。

时间复杂度分析:

  • DFS遍历树的复杂度为O(n)
  • 检查每条边的复杂度为O(n)
  • 计算组合数的复杂度为O(n)
    总体时间复杂度为O(n),空间复杂度为O(n)。

参考代码

  • Python
import sys
input = lambda: sys.stdin.readline().strip()def solve():# 读取输入n = int(input())w = [0] + list(map(int, input().split()))adj = [[] for _ in range(n+1)]for _ in range(n-1):u, v = map(int, input().split())adj[u].append(v)adj[v].append(u)# 计算奇数花坛的总数odd_count = sum(1 for val in w[1:] if val % 2 == 1)# 如果奇数花坛总数为奇数,则无解if odd_count % 2 == 1:print(" ".join(["0"] * (n-1)))return# 计算子树中奇数花坛的数量t = [0] * (n+1)good_edges = 0# DFS计算子树信息def dfs(node, parent):nonlocal good_edgesis_odd = w[node] % 2  # 当前节点是否为奇数for child in adj[node]:if child != parent:# 递归计算子树dfs(child, node)# 更新当前节点的奇数计数is_odd ^= t[child]t[node] = is_odd# 检查是否为好边if parent != 0 and t[node] == 0:good_edges += 1# 从根节点开始DFSdfs(1, 0)# 计算组合数MOD = 10**9 + 7# 预计算阶乘和逆元fact = [1] * (n+1)inv_fact = [1] * (n+1)for i in range(1, n+1):fact[i] = (fact[i-1] * i) % MOD# 计算逆元(使用费马小定理)def pow_mod(x, p):res = 1while p > 0:if p & 1:res = (res * x) % MODx = (x * x) % MODp >>= 1return resinv_fact[n] = pow_mod(fact[n], MOD - 2)for i in range(n, 0, -1):inv_fact[i-1] = (inv_fact[i] * i) % MOD# 计算组合数C(n,k)def comb(n, k):if k < 0 or k > n:return 0return (fact[n] * inv_fact[k] % MOD * inv_fact[n-k] % MOD)# 计算并输出结果result = []for k in range(1, n):ans = comb(good_edges, k)result.append(str(ans))print(" ".join(result))if __name__ == "__main__":solve()
  • Cpp
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD = 1e9 + 7;// 快速幂计算a^b mod MOD
ll pow_mod(ll a, ll b) {ll res = 1;while (b > 0) {if (b & 1) res = (res * a) % MOD;a = (a * a) % MOD;b >>= 1;}return res;
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n;cin >> n;// 读取花坛权值vector<int> w(n+1);for (int i = 1; i <= n; i++) cin >> w[i];// 构建树vector<vector<int>> adj(n+1);for (int i = 0; i < n-1; i++) {int u, v;cin >> u >> v;adj[u].push_back(v);adj[v].push_back(u);}// 计算奇数花坛总数int tot_odd = 0;for (int i = 1; i <= n; i++)tot_odd += (w[i] & 1);// 如果奇数总数为奇数,无解if (tot_odd & 1) {for (int k = 1; k <= n-1; k++)cout << "0" << (k == n-1 ? '\n' : ' ');return 0;}// 存储子树奇数数量vector<int> t(n+1, 0);int good = 0; // 好边数量// DFS计算子树信息vector<bool> vis(n+1, false);function<void(int, int)> dfs = [&](int u, int p) {int odd = w[u] & 1; // 当前节点是否为奇数for (int v : adj[u]) {if (v != p) {dfs(v, u);odd ^= t[v]; // 更新奇数计数}}t[u] = odd;// 检查是否为好边if (p != 0 && t[u] == 0)good++;};dfs(1, 0);// 预计算阶乘和逆元vector<ll> fact(n+1, 1), inv_fact(n+1, 1);for (int i = 1; i <= n; i++)fact[i] = (fact[i-1] * i) % MOD;inv_fact[n] = pow_mod(fact[n], MOD-2); // 费马小定理for (int i = n; i >= 1; i--)inv_fact[i-1] = (inv_fact[i] * i) % MOD;// 组合数计算函数auto comb = [&](int n, int k) -> ll {if (k < 0 || k > n) return 0;return (fact[n] * inv_fact[k] % MOD * inv_fact[n-k] % MOD);};// 输出结果for (int k = 1; k <= n-1; k++) {ll res = comb(good, k);cout << res << (k == n-1 ? '\n' : ' ');}return 0;
}
  • Java
import java.io.*;
import java.util.*;public class Main {static final int MOD = (int)1e9 + 7;public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 读取花坛数量int n = Integer.parseInt(br.readLine().trim());// 读取每个花坛的花朵数String[] vals = br.readLine().trim().split(" ");int[] w = new int[n+1];for (int i = 1; i <= n; i++) {w[i] = Integer.parseInt(vals[i-1]);}// 构建树List<Integer>[] adj = new ArrayList[n+1];for (int i = 0; i <= n; i++) {adj[i] = new ArrayList<>();}for (int i = 0; i < n-1; i++) {String[] edge = br.readLine().trim().split(" ");int u = Integer.parseInt(edge[0]);int v = Integer.parseInt(edge[1]);adj[u].add(v);adj[v].add(u);}// 计算奇数花坛总数int oddCount = 0;for (int i = 1; i <= n; i++) {if (w[i] % 2 == 1) {oddCount++;}}// 如果奇数总数为奇数,无解if (oddCount % 2 == 1) {StringBuilder sb = new StringBuilder();for (int k = 1; k <= n-1; k++) {sb.append("0");if (k < n-1) sb.append(" ");}System.out.println(sb.toString());return;}// 存储子树奇数数量和好边数量int[] t = new int[n+1];int[] good = new int[1]; // 用数组便于在DFS中修改// DFS计算子树信息dfs(1, 0, w, adj, t, good);// 预计算阶乘和逆元long[] fact = new long[n+1];long[] invFact = new long[n+1];fact[0] = 1;for (int i = 1; i <= n; i++) {fact[i] = (fact[i-1] * i) % MOD;}invFact[n] = powMod(fact[n], MOD-2);for (int i = n; i > 0; i--) {invFact[i-1] = (invFact[i] * i) % MOD;}// 输出结果StringBuilder result = new StringBuilder();for (int k = 1; k <= n-1; k++) {long ans = combination(good[0], k, fact, invFact);result.append(ans);if (k < n-1) result.append(" ");}System.out.println(result.toString());}// DFS计算子树信息static void dfs(int node, int parent, int[] w, List<Integer>[] adj, int[] t, int[] good) {int isOdd = w[node] % 2; // 当前节点是否为奇数for (int child : adj[node]) {if (child != parent) {dfs(child, node, w, adj, t, good);isOdd ^= t[child]; // 更新奇数计数}}t[node] = isOdd;// 检查是否为好边if (parent != 0 && t[node] == 0) {good[0]++;}}// 快速幂计算static long powMod(long a, int b) {long res = 1;while (b > 0) {if ((b & 1) == 1) res = (res * a) % MOD;a = (a * a) % MOD;b >>= 1;}return res;}// 计算组合数C(n,k)static long combination(int n, int k, long[] fact, long[] invFact) {if (k < 0 || k > n) return 0;return (fact[n] * invFact[k] % MOD * invFact[n-k] % MOD);}
}

相关文章:

2025.05.17淘天机考笔试真题第三题

&#x1f4cc; 点击直达笔试专栏 &#x1f449;《大厂笔试突围》 &#x1f4bb; 春秋招笔试突围在线OJ &#x1f449; 笔试突围OJ 03. 奇偶平衡树分割问题 问题描述 K小姐是一位园林设计师&#xff0c;她设计了一个由多个花坛组成的树形公园。每个花坛中种植了不同数量的花…...

history模式:让URL更美观

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

算法:分治法

实验内容 在一个2kⅹ2k个方格组成的棋盘中&#xff0c;若恰有一个方格与其他方格不同&#xff0c;则称该方格为特殊方格&#xff0c;且称该棋盘为一特殊棋盘。 显然&#xff0c;特殊方格出现的位置有4k 种情况&#xff0c;即k>0,有4k 种不同的特殊棋盘 棋盘覆盖&#xff1a…...

豆粕ETF投资逻辑整理归纳-20250511

目录 一、什么是豆粕 基本概念 豆粕上游生产国 豆粕下游消耗方 二、豆粕ETF 概念 策略 展期操作 超额收益 行情波动 豆粕资产的低相关性 三、展期收益 Contango升水结构和Backwardation贴水结构 豆粕的贴水逻辑 还有哪些品种拥有长期的展期收益 四、其他相关信…...

使用 Python 连接 Oracle 23ai 数据库完整指南

方法一:使用 oracledb 官方驱动(推荐) Oracle 官方维护的 oracledb 驱动(原 cx_Oracle)是最新推荐方案,支持 Thin/Thick 两种模式。 1. 环境准备 pip install oracledb2. 完整示例代码 import oracledb import getpass from typing import Unionclass Oracle23aiConn…...

构建集成差异化灵巧手和先进机器人控制技术的自动化系统

介绍程序 1.流程分析 通过流程分析审查应用机器人自动化的可行性。 2.系统设计 选择合适的机器人&#xff08;机械臂、夹持器、视觉系统等&#xff09;&#xff0c;并通过详细的任务分析设计最佳系统。 3.内部测试 建立内部测试平台并解决任何问题。 4.现场测试 现场设…...

题单:汉诺塔问题

题目描述 如下图所示&#xff0c;设有 nn 个大小不等的中空圆盘&#xff0c;按照从小到大的顺序叠套在立柱 A 上&#xff0c;另有两根立柱 B 和 C 。 现在要求把全部圆盘从 A 柱&#xff08;称为源柱&#xff09;移到 C 柱&#xff08;称为目标柱&#xff09;&#xff0c;移动…...

Unable to get end effector tips from jmg

这个错误信息表明在使用MoveIt2时&#xff0c;moveit_visual_tools无法从关节模型组&#xff08;Joint Model Group&#xff0c;简称JMG&#xff09;中获取末端执行器&#xff08;End Effector&#xff0c;简称EE&#xff09;的尖端信息。这通常是因为配置文件中缺少相关信息&a…...

flutter flutter run 运行项目卡在Running Gradle task ‘assembleDebug‘...

flutter run --verbose在运行flutter run 可以看到是卡在哪一步 最重要的就是自己查看日志&#xff0c;具体哪一步有问题flutter run --verbose使用这个&#xff0c;运行了项目会将错误信息放在控制台 可能原因 静态资源问题如果&#xff1a;图片、字体文件等没有在pubspec.yam…...

STM32烧录程序正常,但是运行异常

一、硬件配置问题 BOOT引脚设置错误 STM32的启动模式由BOOT0和BOOT1引脚决定。若设置为从RAM启动&#xff08;BOOT01&#xff0c;BOOT10&#xff09;&#xff0c;程序在掉电后无法保存&#xff0c;导致复位后无法正常运行。应确保BOOT00&#xff08;从Flash启动&#xff09;15。…...

TTS:F5-TTS 带有 ConvNeXt V2 的扩散变换器

1&#xff0c;项目简介 F5-TTS 于英文生成领域表现卓越&#xff0c;发音标准程度在本次评测软件中独占鳌头。再者&#xff0c;官方预设的多角色生成模式独具匠心&#xff0c;能够配置多个角色&#xff0c;一次性为多角色、多情绪生成对话式语音&#xff0c;别出心裁。 最低配置…...

ecmascript 第6版特性 ECMA-262 ES6

https://blog.csdn.net/zlpzlpzyd/article/details/146125018 在之前写的文章基础上&#xff0c;ES6在export和import的基础外&#xff0c;还有如下特性 特性说明let/const块级作用域变量声明>箭头函数Promise异步编程...

2024 山东省ccpc省赛

目录 I&#xff08;签到&#xff09; 题目简述&#xff1a; 思路&#xff1a; 代码&#xff1a; A&#xff08;二分答案&#xff09; 题目简述&#xff1a; 思路&#xff1a; 代码&#xff1a; K&#xff08;构造&#xff09; 题目&#xff1a; 思路&#xff1a; 代…...

角点特征:从传统算法到深度学习算法演进

1 概述 图像特征是用来描述和分析图像内容的关键属性&#xff0c;通常包括颜色、纹理和形状等信息。颜色特征能够反映图像中不同颜色的分布&#xff0c;常通过 RGB 值或色彩直方图表示。纹理特征则关注图像表面的结构和细节&#xff0c;例如通过灰度共生矩阵或局部二值模式&…...

免费代理IP服务有哪些隐患?如何安全使用?

代理IP已经成为互联网众多用户日常在线活动中不可或缺的一部分。无论是为了保护个人隐私、突破地理限制&#xff0c;还是用于数据抓取、广告投放等商业用途&#xff0c;代理IP都扮演着关键角色。然而&#xff0c;市场上存在大量的免费代理IP服务&#xff0c;尽管它们看起来颇具…...

深入了解 VPC 端点类型 – 网关与接口

什么是VPC 端点 VPC 端点&#xff08;VPC Endpoint&#xff09;是 Amazon Web Services (AWS) 提供的一种服务&#xff0c;允许用户在 Virtual Private Cloud (VPC) 内部安全地访问 AWS 服务&#xff0c;而无需通过公共互联网。VPC 端点通过私有连接将 VPC 与 AWS 服务直接连接…...

Android屏幕采集编码打包推送RTMP技术详解:从开发到优化与应用

在现代移动应用中&#xff0c;屏幕采集已成为一个广泛使用的功能&#xff0c;尤其是在实时直播、视频会议、远程教育、游戏录制等场景中&#xff0c;屏幕采集技术的需求不断增长。Android 平台为开发者提供了 MediaProjection API&#xff0c;这使得屏幕录制和采集变得更加简单…...

信息系统项目管理师高级-软考高项案例分析备考指南(2023年案例分析)

个人笔记整理---仅供参考 计算题 案例分析里的计算题就是进度、挣值分析、预测技术。主要考査的知识点有:找关键路径、求总工期、自由时差、总时差、进度压缩资源平滑、挣值计算、预测计算。计算题是一定要拿下的&#xff0c;做计算题要保持头脑清晰&#xff0c;认真读题把PV、…...

全栈项目搭建指南:Nuxt.js + Node.js + MongoDB

全栈项目搭建指南&#xff1a;Nuxt.js Node.js MongoDB 一、项目概述 我们将构建一个完整的全栈应用&#xff0c;包含&#xff1a; 前端&#xff1a;Nuxt.js (SSR渲染)后端&#xff1a;Node.js (Express/Koa框架)数据库&#xff1a;MongoDB后台管理系统&#xff1a;集成在同…...

Linux:基础IO

一&#xff1a;理解文件 1-1 狭义理解 文件存储在磁盘中&#xff0c;由于磁盘是永久性存储介质&#xff0c;因此文件在磁盘上的存储是永久性的&#xff1b;磁盘也是外设&#xff0c;因此磁盘上对文件的所有操作本质是对外设的输入和输出 1-2 广义理解 Linux下一切皆文件&am…...

MySQL 索引优化以及慢查询优化

在数据库性能优化中&#xff0c;索引优化和慢查询优化是两个关键环节。合理使用索引可以显著提高查询效率&#xff0c;而识别和优化慢查询则能提升整体数据库性能。本文将详细介绍MySQL索引优化和慢查询优化的方法和最佳实践。 一、MySQL 索引优化 1.1 索引的基本概念 索引是…...

Leaflet使用SVG创建动态Legend

接前一篇文章&#xff0c;前一篇文章我们使用 SVG 创建了带有动态文字的图标&#xff0c;今天再看看怎样在地图上根据动态图标生成相关的legend&#xff0c;当然这里也还是使用了 SVG 来生成相关颜色的 legend。 看下面的代码&#xff0c;生成了一个 svg 节点&#xff0c;其中…...

使用 Vue Tour 封装一个统一的页面引导组件

项目开发过程中需要实现用户引导功能&#xff0c;经过调研发现一个好用的 Vue 插件 vue-tour&#xff0c;今天就来分享一下我是如何基于 vue-tour 封装一个统一的引导组件&#xff0c;方便后续在多个页面复用的。 &#x1f4e6; 第一步&#xff1a;安装 vue-tour 插件 首先安装…...

OpenResty 深度解析:构建高性能 Web 服务的终极方案

引言 openresty是什么&#xff1f;在我个人对它的理解来看相当于嵌入了lua的nginx; 我们在nginx中嵌入lua是为了不需要再重新编译,我们只需要重新修改lua脚本,随后重启即可; 一.lua指令序列 我们分别从初始化阶段&#xff0c;重写/访问阶段&#xff0c;内容阶段&#xff0c;日志…...

赋能企业级移动应用 CFCA FIDO+提升安全与体验

移动办公与移动金融为企业有效提升业务丰富性、执行便捷性。与此同时&#xff0c;“安全”始终是移动办公与移动金融都绕不开的话题。随着信息安全技术的发展&#xff0c;企业级移动应用中安全与便捷不再是两难的抉择。 中金金融认证中心&#xff08;CFCA&#xff09;作为经国…...

Redis 数据类型与操作完全指南

Redis 是一个开源的、内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。与传统的关系型数据库不同&#xff0c;Redis 提供了丰富的数据类型和灵活的操作方式&#xff0c;这使得它能够高效地解决各种不同场景下的数据存储和处理问题。本文将全面介绍 R…...

ArrayList-集合使用

自动扩容&#xff0c;集合的长度可以变化&#xff0c;而数组长度不变&#xff0c;集合更加灵活。 集合只能存引用数据类型&#xff0c;不能直接存基本数据类型&#xff0c;除非包装 ArrayList会拿[]展示数据...

深入解析Spring Boot与Redis集成:高效缓存实践

深入解析Spring Boot与Redis集成&#xff1a;高效缓存实践 引言 在现代Web应用开发中&#xff0c;缓存技术是提升系统性能的重要手段之一。Redis作为一种高性能的键值存储数据库&#xff0c;广泛应用于缓存、会话管理和消息队列等场景。本文将详细介绍如何在Spring Boot项目中…...

8天Python从入门到精通【itheima】-11~13

目录 11节-PyCharm的安装和基础使用&#xff1a; 1.第三方IDE&#xff08;集成开发工具&#xff09; 2.PyCharm的所属——jetbrains公司 3.进入jetbrains的官网&#xff0c;搜索下载【官网自带中文&#xff0c;太友好了&#xff0c;爱你&#xff08;づ&#xffe3;3&#x…...

day33-网络编程

1. 网络编程入门 1.1 网络编程概述 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统…...

CMake基础及操作笔记

CMake 基础与操作&#xff1a;从入门到精通 前言 CMake 是一个功能强大、跨平台的构建工具&#xff0c;广泛用于 C 项目管理。它通过简洁的配置文件&#xff08;CMakeLists.txt&#xff09;描述编译过程&#xff0c;生成适用于不同平台的构建脚本&#xff08;如 Makefile 或 …...

使用lvm进行磁盘分区

使用lvm进行磁盘分区 目的&#xff1a; 使用/dev/vdb创建一个5g的逻辑卷挂载到/mnt/lvmtest 前提&#xff1a; /dev/vdb是一块干净的空磁盘&#xff0c;数据会被清空&#xff01;&#xff01;&#xff01; 1. 创建物理卷(PV)&#xff1a; pvcreate /dev/sdb2. 验证&#xf…...

Java的线程通信机制是怎样的呢?

核心观点:线程通信本质是状态同步与数据传递的协同控制 (类比测试团队协作:如同测试用例执行需要同步进度,测试数据需要跨线程传递) 一、基础通信机制(附测试验证方法) 1. 共享内存(最常用但最危险) // 测试典型场景:多线程统计测试用例通过率 public class Share…...

线性回归策略

一种基于ATR(平均真实范围)、线性回归和布林带的交易策略。以下是对该策略的全面总结和分析: 交易逻辑思路 1. 过滤条件: - 集合竞价过滤:在每个交易日的开盘阶段,过滤掉集合竞价产生的异常数据。 - 价格异常过滤:排除当天开盘价与最高价或最低价相同的情况,这…...

Sparse4D运行笔记

Sparse4D有三个版本&#xff0c;其中V1和V2版本的官方文档中环境依赖写得比较模糊且依赖库有版本冲突。 1. Sparse4D V1 创建环境 conda create sparse4dv1 python3.8 激活环境 conda activate sparse4dv1 安装torch, torchvision, torchaudio pip install torch1.13.0c…...

Bitmap、Roaring Bitmap、HyperLogLog对比介绍

一、Bitmap(位图)概述 Bitmap 是一种用位(bit)来表示集合元素是否存在的数据结构。每个位代表一个元素的状态(0或1),非常节省空间且支持快速集合操作。 常见Bitmap类型: 普通Bitmap 最简单的位数组,适合元素范围固定且不稀疏的场景。例如,元素范围是0~1000,用1001…...

Rust 数据结构:HashMap

Rust 数据结构&#xff1a;HashMap Rust 数据结构&#xff1a;HashMap创建一个新的哈希映射HashMap::new()将元组变成哈希表 访问哈希映射中的值哈希映射和所有权更新哈希映射重写一个值仅当键不存在时才添加键和值基于旧值更新值 散列函数 Rust 数据结构&#xff1a;HashMap …...

Spring6学习及复习笔记

1、快速入门认识 通过编写xml配置文件来创建对象&#xff0c;读取bean标签的id值和class值来创建。 之后再通过对象调用相关的方法&#xff08;这里实际上用到的是反射机制&#xff09; 对象会存放到Map集合中 大致反射思路如下&#xff1a;&#xff08;这里只是模拟&#x…...

开源语音-文本基础模型和全双工语音对话框架 Moshi 介绍

介绍 一、项目背景 Moshi是一种语音-文本基础模型和全双工语音对话框架。它使用了Mimi这一业界领先的流式神经音频编解码器。Mimi能够以完全流式处理的方式&#xff08;80毫秒的延迟&#xff0c;即帧大小&#xff09;&#xff0c;将24千赫兹的音频信号压缩为12.5赫兹的表示形式…...

MATLAB学习笔记(六):MATLAB数学建模

MATLAB 是数学建模的强大工具&#xff0c;其丰富的函数库和可视化能力可以高效解决各类数学建模问题。以下是 MATLAB 数学建模的完整指南&#xff0c;涵盖建模流程、常用方法、代码示例及实际应用。 一、数学建模的基本流程 问题分析 • 明确目标&#xff08;预测、优化、分类等…...

博客打卡-求解流水线调度

题目如下&#xff1a; 有n个作业&#xff08;编号为1&#xff5e;n&#xff09;要在由两台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工&#xff0c;然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi&#xff08;1≤i≤n&#xff09;。 流水…...

【Ragflow】22.RagflowPlus(v0.3.0):用户会话管理/文件类型拓展/诸多优化更新

概述 在历经三周的阶段性开发后&#xff0c;RagflowPlus顺利完成既定计划&#xff0c;正式发布v0.3.0版本。 开源地址&#xff1a;https://github.com/zstar1003/ragflow-plus 新功能 1. 用户会话管理 在后台管理系统中&#xff0c;新增用户会话管理菜单。在此菜单中&…...

深度学习中ONNX格式的模型文件

一、模型部署的核心步骤 模型部署的完整流程通常分为以下阶段&#xff0c;用 “跨国旅行” 类比&#xff1a; 步骤类比解释技术细节1. 训练模型学会一门语言&#xff08;如中文&#xff09;用 PyTorch/TensorFlow 训练模型2. 导出为 ONNX翻译成国际通用语言&#xff08;如英语…...

【机器人】复现 WMNav 具身导航 | 将VLM集成到世界模型中

WMNav 是由VLM视觉语言模型驱动的&#xff0c;基于世界模型的对象目标导航框架。 设计一种预测环境状态的记忆策略&#xff0c;采用在线好奇心价值图来量化存储&#xff0c;目标在世界模型预测的各种场景中出现的可能性。 本文分享WMNav复现和模型推理的过程&#xff5e; 下…...

C++中析构函数不设为virtual导致内存泄漏示例

一、问题示例 #include <iostream> using namespace std;class Base { public:Base() { cout << "Base constructor\n"; }~Base() { cout << "Base destructor\n"; } // 不是 virtual };class Derived : public Base { public:Derived(…...

UDP--DDR--SFP,FPGA实现之模块梳理及AXI读写DDR读写上板测试

模块梳理介绍 在之前的几篇文章中&#xff0c;笔者详细介绍了整个项目的框架结构以及部分关键模块的实现细节。这些模块包括UDP协议栈、UDP指令监测、数据跨时钟域处理、DDR读写控制、内存读取控制以及DDR AXI控制器等。这些模块共同构成了项目的基础架构&#xff0c;每个模块…...

Slidev集成Chart.js:专业数据可视化演示文稿优化指南

引言&#xff1a;为何选择在Slidev中集成Chart.js&#xff1f; 在现代演示文稿中&#xff0c;高效的数据可视化对于清晰传达复杂信息至关重要。Slidev是一款灵活的开源演示文稿工具&#xff0c;基于Web技术构建&#xff0c;但在高级数据可视化方面存在一定局限。本文旨在提供一…...

动态规划(3)学习方法论:构建思维模型

引言 动态规划是算法领域中一个强大而优雅的解题方法,但对于许多学习者来说,它也是最难以掌握的算法范式之一。与贪心算法或分治法等直观的算法相比,动态规划往往需要更抽象的思维和更系统的学习方法。在前两篇文章中,我们介绍了动态规划的基础概念、原理以及问题建模与状…...

NDS3211HV单路H.264/HEVC/HD视频编码器

1产品概述 NDS3211HV单路高清编码器是一款功能强大的音/视频编码设备&#xff0c;支持2组立体声&#xff0c;同时还支持CC(CVBS)字幕。支持多种音频编码方式。该设备配备了多种音/视频输入接口&#xff1a;HD-SDI数字视频输入、HDMI高清输入&#xff08;支持CC&#xff09;、A…...

GO语言语法---if语句

文章目录 1. 基本语法1.1 单分支1.2 双分支1.3 多分支 2. Go特有的if语句特性2.1 条件前可以包含初始化语句2.2 条件表达式不需要括号2.3 必须使用大括号2.4 判断语句所在行数控制 Go语言的if语句用于条件判断&#xff0c;与其他C风格语言类似&#xff0c;但有一些独特的语法特…...