DeepSeek    LeetCode 3841. 查询树上回文路径 Rust实现
解题思路核心在于快速判断树中任意两点路径上的字符能否重排为回文串。· 回文判定一个字符串能重排成回文当且仅当其出现奇数次的字符最多只有一个。用 26 位整数掩码表示每个字符的奇偶性第 i 位为 1 表示字符 i 出现奇数次。· 前缀异或XOR定义 pref[x] 为从根节点到 x 的路径上所有字符的奇偶掩码。则 u 到 v 路径的掩码为mask(u→v) pref[u] ^ pref[v] ^ (1 char(LCA(u,v)))。· 动态更新修改节点 u 的字符时会影响以 u 为根的整棵子树中所有节点的 pref 值。利用 DFS 序欧拉序 将子树映射为连续区间 [tin[u], tout[u]]再用 树状数组Fenwick Tree 维护区间异或更新和单点查询。· LCA 查询使用二进制提升Binary Lifting预处理O(log n) 回答。---Rust 实现ruststruct BIT {bit: Vecu32,n: usize,}impl BIT {fn new(n: usize) - Self {BIT {bit: vec![0; n 2],n,}}fn add(mut self, mut idx: usize, val: u32) {while idx self.n {self.bit[idx] ^ val;idx idx idx.wrapping_neg(); // lowbit}}// 区间 [l, r] 异或 valfn range_xor(mut self, l: usize, r: usize, val: u32) {self.add(l, val);self.add(r 1, val);}// 单点查询fn query(self, mut idx: usize) - u32 {let mut res 0;while idx 0 {res ^ self.bit[idx];idx - idx idx.wrapping_neg();}res}}impl Solution {pub fn palindrome_path(n: i32, edges: VecVeci32, s: String, queries: VecString) - Vecbool {let n n as usize;// 建图let mut g vec![Vec::new(); n];for e in edges {let u e[0] as usize;let v e[1] as usize;g[u].push(v);g[v].push(u);}let s_bytes s.as_bytes();let mut depth vec![0; n];let mut tin vec![0; n];let mut tout vec![0; n];let mut pref vec![0u32; n];let mut parent vec![vec![0; n]; 1]; // 第一层后续扩展// ---------- 迭代 DFS 计算 tin, tout, depth, parent[0], pref ----------let mut stack Vec::new();stack.push((0, -1, 0)); // (节点, 父节点, 状态) 状态0进入, 1离开let mut timer 0;while let Some((u, p, state)) stack.pop() {if state 0 {timer 1;tin[u] timer;if p -1 {depth[u] 0;parent[0][u] 0;pref[u] 1u32 (s_bytes[u] - ba);} else {let p p as usize;depth[u] depth[p] 1;parent[0][u] p;pref[u] pref[p] ^ (1u32 (s_bytes[u] - ba));}stack.push((u, p, 1)); // 退出标记for v in g[u] {if p -1 || v ! p as usize {stack.push((v, u as i32, 0));}}} else {tout[u] timer;}}// ---------- 二进制提升表 ----------let mut LOG 1;while (1 LOG) n {LOG 1;}parent.resize(LOG, vec![0; n]);for k in 1..LOG {for i in 0..n {parent[k][i] parent[k - 1][parent[k - 1][i]];}}// LCA 闭包let lca |mut u: usize, mut v: usize| - usize {if depth[u] depth[v] {std::mem::swap(mut u, mut v);}let diff depth[u] - depth[v];for k in 0..LOG {if diff (1 k) ! 0 {u parent[k][u];}}if u v {return u;}for k in (0..LOG).rev() {if parent[k][u] ! parent[k][v] {u parent[k][u];v parent[k][v];}}parent[0][u]};let mut bit BIT::new(n);let mut chars: Vecu8 s_bytes.iter().map(|b| b - ba).collect();let mut ans Vec::new();for q in queries {let parts: Vecstr q.split_whitespace().collect();match parts[0] {update {let u parts[1].parse::usize().unwrap();let c parts[2].as_bytes()[0] - ba;if c ! chars[u] {let diff (1u32 chars[u]) ^ (1u32 c);bit.range_xor(tin[u], tout[u], diff);chars[u] c;}}query {let u parts[1].parse::usize().unwrap();let v parts[2].parse::usize().unwrap();let w lca(u, v);let cur_u pref[u] ^ bit.query(tin[u]);let cur_v pref[v] ^ bit.query(tin[v]);let mask cur_u ^ cur_v ^ (1u32 chars[w]);// 判断 mask 是否只有 0 或 1 个 1ans.push((mask (mask - 1)) 0);}_ {}}}ans}}---复杂度分析· 预处理DFS 和二进制提升均 O(n log n)· 每次查询/更新O(log n)LCA 树状数组操作· 空间O(n log n)LCA 表 O(n)其他数组该实现充分利用了位运算和区间数据结构能够高效处理动态树上的回文路径查询。

相关新闻

DeepSeek    LeetCode 3841. 查询树上回文路径 Python3实现

DeepSeek LeetCode 3841. 查询树上回文路径 Python3实现

解题思路这道题要求高效判断树中任意两点路径上的字符能否重排为回文串。回文串判定条件:一个字符串能重排成回文串,当且仅当其出现奇数次的字符最多只有一个。核心优化技巧——位掩码 前缀异或: 用26位整数表示每个字符的奇偶性&#xff1a…

2026/10/2 1:01:20 阅读更多 →
开题报告AI率检测超标怎么改?它全是论述文字,和正文不是一个改法。

开题报告AI率检测超标怎么改?它全是论述文字,和正文不是一个改法。

开题报告AI率检测超标怎么改?它全是论述文字,和正文不是一个改法。 你可能刚经历这么一件事:正文测出来的 AI 率还行,反倒是开题报告或者研究计划书这几千字,数值高得离谱。明明是一个字一个字敲的,怎么就被…

2026/9/25 11:14:52 阅读更多 →
DeepSeek    LeetCode 3841. 查询树上回文路径 Java实现

DeepSeek LeetCode 3841. 查询树上回文路径 Java实现

解题思路这道题的核心在于如何高效判断树中任意两点路径上的字符能否重排为回文串。回文串的判定条件:一个字符串能重排成回文串,当且仅当其出现奇数次的字符最多只有一个。例如 "aac" 中 a 出现2次(偶),c 出…

2026/10/13 5:02:41 阅读更多 →

最新新闻

MCP与A2A:构建可工程化落地的多Agent系统

MCP与A2A:构建可工程化落地的多Agent系统

1. 这不是概念炒作,是工程落地的分水岭“多 Agent、MCP、A2A——最该补的一堂课”,这标题乍看像培训广告,实则戳中了当前智能系统开发里最真实、最普遍、也最容易被忽视的断层。我带过七支不同行业的AI工程团队,从金融风控后台到工…

2026/10/15 12:20:55 阅读更多 →
CPD级联部分解码器:显著目标检测的速度与精度平衡实践

CPD级联部分解码器:显著目标检测的速度与精度平衡实践

1. 为什么CPD值得单独拿出来聊显著目标检测这个方向,做过的人都知道,模型精度和推理速度几乎是一对天敌。早期的方法要么精度勉强能看但跑一张图要几百毫秒甚至上秒级,要么速度快但边缘糊成一团、小目标直接漏检。CVPR 2019那篇Cascaded Part…

2026/10/15 12:20:55 阅读更多 →
SpringBoot3+Vue3全栈进销存系统开发实战

SpringBoot3+Vue3全栈进销存系统开发实战

1. 项目概述:全栈进销存系统开发指南这套教程面向需要完成毕业设计或希望掌握全栈开发技能的初学者,通过SpringBoot3Vue3技术栈实现一个完整的进销存管理系统。我在实际企业级项目开发中发现,这类系统涵盖了前后端分离架构中最典型的CRUD操作…

2026/10/15 12:20:55 阅读更多 →
SSM+Vue旅游网站开发实战与毕业设计指南

SSM+Vue旅游网站开发实战与毕业设计指南

1. 项目背景与核心价值 去年指导过一位计算机专业学生的毕业设计,他选择了旅游资源网站作为课题。这个选题看似普通,但实际开发中涉及的技术栈组合和业务逻辑复杂度,完全能够支撑起一个合格的本科毕业设计。SSM(SpringSpringMVCMy…

2026/10/15 12:20:55 阅读更多 →
SpringBoot3+Vue3企业级进销存系统开发实战

SpringBoot3+Vue3企业级进销存系统开发实战

1. 项目概述:企业级进销存系统开发实战这套教程是我在指导了37名计算机专业毕业生后提炼出的实战方案,专门针对需要完成毕业设计又缺乏商业项目经验的学生群体。不同于市面上简单的CRUD示例,我们采用SpringBoot3Vue3技术栈实现了一个具备完整…

2026/10/15 12:20:55 阅读更多 →
Django 后端实战指南_3:插入 RBAC 测试数据

Django 后端实战指南_3:插入 RBAC 测试数据

阶段 3:插入 RBAC 测试数据 合辑:Django 系统阶段开发手册 | 阶段:3 / 18 | 定位:以自定义管理命令初始化 RBAC 测试数据,并多渠道验证四张表中的数据关系 | 建议学时:3–…

2026/10/15 12:19:54 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →