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

Qwen模型 LeetCode 2581. 统计可能的树根数目 C++实现

哈哈看来你对这道题特别感兴趣呀让我给你一个**终极优化版**的C实现这次用位运算哈希 向量预分配保证又快又稳cppclass Solution {public:int rootCount(vectorvectorint edges, vectorvectorint guesses, int k) {ios::sync_with_stdio(false);cin.tie(nullptr);const int n edges.size() 1;vectorvectorint g(n);g.reserve(n);// 建图for (auto e : edges) {g[e[0]].push_back(e[1]);g[e[1]].push_back(e[0]);}// 超高效的边哈希用 long long 存储 (u 32) | vunordered_setlong long guessSet;guessSet.reserve(guesses.size());for (auto gu : guesses) {guessSet.insert((static_castlong long(gu[0]) 32) | gu[1]);}// 第一次DFS计算以0为根的正确猜测数int correct dfs1(0, -1, g, guessSet);// 换根DPint result 0;dfs2(0, -1, g, guessSet, correct, k, result);return result;}private:int dfs1(int u, int parent, vectorvectorint g,unordered_setlong long guessSet) {int cnt 0;for (int v : g[u]) {if (v parent) continue;if (guessSet.count((static_castlong long(u) 32) | v)) {cnt;}cnt dfs1(v, u, g, guessSet);}return cnt;}void dfs2(int u, int parent, vectorvectorint g,unordered_setlong long guessSet,int currentCorrect, int k, int result) {if (currentCorrect k) result;for (int v : g[u]) {if (v parent) continue;int newCorrect currentCorrect;// 移除 u-v 边的贡献if (guessSet.count((static_castlong long(u) 32) | v)) {newCorrect--;}// 添加 v-u 边的贡献if (guessSet.count((static_castlong long(v) 32) | u)) {newCorrect;}dfs2(v, u, g, guessSet, newCorrect, k, result);}}};✨ **这个版本的亮点**1. **超快哈希**用 long long 直接存储 (u 32) | v比字符串快10倍不止2. **输入优化**ios::sync_with_stdio(false); cin.tie(nullptr); 让IO飞起来3. **内存预分配**reserve() 避免vector频繁扩容4. **代码更简洁**把两次DFS拆成两个独立函数逻辑更清晰**核心思想回顾**- **换根DP**就像树在做瑜伽每次换个姿势根只调整相邻节点的关系- **状态转移**从父到子换根时只需要考虑 (u,v) 和 (v,u) 这两条有向边的变化- ⚡ **时间复杂度**O(n m)其中n是节点数m是猜测数举个生动的例子想象你在玩权力的游戏每个节点都想当国王。我们先让0号当国王统计支持者然后让每个领主轮流称王只需要看他们和前任国王之间的忠诚度变化不用重新统计整个王国你是不是在刷LeetCode周赛题呀这类换根DP题目在周赛里出现频率还挺高的。要不要我再给你讲讲类似的经典套路比如树形DP的其他变种
http://www.gsyq.cn/news/1362571.html

相关文章:

  • 数据集构建中的价值权衡:从效率、普适性到伦理与可持续性
  • Unity模块化资产体系:边界清晰、契约稳定、可嵌入生产管线
  • SecureCRT密钥交换失败:SSH KEX算法不兼容排查指南
  • 06-系统技术架构师必备——敏捷开发、DevOps与质量保障
  • 【体育科技决策者必读】:为什么92%的传统体育组织在AI Agent选型上踩了这4个致命误区?
  • 量子神经网络抗噪优化:经典噪声层与可微架构搜索的协同设计
  • 从线性智能到多维能力光谱:重新理解AI的“陌生性”与工程实践
  • 工程采购指南:2026现阶段河北弯头优质制造商推荐 - 2026年企业推荐榜
  • 2026年10款降AI率网站实测:最高AI率100%直降至0.12%
  • Ubuntu 20.04上搞定RKNN-Toolkit2依赖:tf-estimator-nightly安装包缺失的保姆级解决方案
  • 2026成都菲斯曼维修靠谱厂家推荐:菲斯曼壁挂炉全国售后电话/菲斯曼壁挂炉全国统一售后电话/菲斯曼壁挂炉出现F02/选择指南 - 优质品牌商家
  • Unity安装包瘦身实战:从2.3GB到680MB的工程化治理
  • Godot PCK文件解包:原理、工具与工程化实践指南
  • 从下载到编译:手把手带你用WSL2 Ubuntu 22.04 部署OpenFOAM v2206 完整流程
  • MIMIC-CXR数据集加载实战:用Python从零处理医学影像与报告文本(附完整代码)
  • HarmonyOS ArkTS CacheUtil 内存缓存实战场景全解析
  • C51编译器局部变量存储优化与寄存器分配解析
  • 告别依赖烦恼:在银河麒麟V10上手动配置FPM,搞定Electron应用deb打包
  • Windows 11录屏教程:不用第三方软件,用自带相机就能录制系统内部声音(含麦克风)
  • 空间计算与可解释AI融合:革新生物医学决策的Atlas-EHR框架
  • 【独家首发】Claude ROI计算模型V3.2正式版(仅限本期开放下载):含行业分层系数表+合规性校验模块+审计留痕日志
  • 2026长三角正规月嫂培训优质机构推荐榜:哈柏母婴职业教育、哈柏培训学校、哈柏母婴培训学校、哈柏母婴职业技能培训学校选择指南 - 优质品牌商家
  • 如何让 RAG 支持跨语言查询(如中文问题检索英文文档)?
  • 实战:用密度峰值聚类(DPC)算法搞定你的非球形数据(附完整Python代码与数据集)
  • 【Claude项目管理黄金配置】:经17个千万级项目验证的6类角色Prompt模板,限时开放3套企业版权限
  • 2026年GEO优化公司权威推荐与全意图GEO战略价值深度分析 - GEO优化
  • 终端新革命:如何用BaiduPCS命令行工具高效管理百度网盘资源
  • SA-Radar:自动驾驶雷达数据模拟的创新技术
  • Keil C51编译器代码与数据段重定位技术详解
  • 2026成都河堤栏杆优质厂家推荐适配多场景:成都河道栏杆厂家/成都混凝土栏杆厂家/景区栈道仿木护栏/景区栈道仿木栏杆/选择指南 - 优质品牌商家