杭州做商务网站顺企网下载安装

bicheng/2026/1/20 8:00:17/文章来源:
杭州做商务网站,顺企网下载安装,免费制作婚介网站,山西响应式网页建设哪家有作者推荐 【深度优先搜索】【树】【有向图】【推荐】685. 冗余连接 II 本文涉及知识点 深度优先搜索 树 图论 状态压缩 LeetCode:2791. 树中可以形成回文的路径数 给你一棵 树#xff08;即#xff0c;一个连通、无向且无环的图#xff09;#xff0c;根 节点为 0 即一个连通、无向且无环的图根 节点为 0 由编号从 0 到 n - 1 的 n 个节点组成。这棵树用一个长度为 n 、下标从 0 开始的数组 parent 表示其中 parent[i] 为节点 i 的父节点由于节点 0 为根节点所以 parent[0] -1 。 另给你一个长度为 n 的字符串 s 其中 s[i] 是分配给 i 和 parent[i] 之间的边的字符。s[0] 可以忽略。 找出满足 u v 且从 u 到 v 的路径上分配的字符可以 重新排列 形成 回文 的所有节点对 (u, v) 并返回节点对的数目。 如果一个字符串正着读和反着读都相同那么这个字符串就是一个 回文 。 示例 1 输入parent [-1,0,0,1,1,2], s “acaabc” 输出8 解释符合题目要求的节点对分别是 (0,1)、(0,2)、(1,3)、(1,4) 和 (2,5) 路径上只有一个字符满足回文定义。(2,3)路径上字符形成的字符串是 “aca” 满足回文定义。(1,5)路径上字符形成的字符串是 “cac” 满足回文定义。(3,5)路径上字符形成的字符串是 “acac” 可以重排形成回文 “acca” 。 示例 2 输入parent [-1,0,0,0,0], s “aaaaa” 输出10 解释任何满足 u v 的节点对 (u,v) 都符合题目要求。 提示 n parent.length s.length 1 n 105 对于所有 i 1 0 parent[i] n - 1 均成立 parent[0] -1 parent 表示一棵有效的树 s 仅由小写英文字母组成 深度优先搜索 树的路径一定是 起点 → \rightarrow →公共祖先 → \rightarrow →终点特例是起点或终点就是公共祖先。 且从 u 到 v 的路径上分配的字符可以 重新排列 形成 回文 ⟺ \iff ⟺ 各字符的数量只有1个是奇数或全部是偶数 状态压缩: mask (1 i ) 表示 ‘a’i 出现的次数是奇数。 深度优先搜索的状态 暴力的办法是枚举左支和右支的状态空间复杂度(226) 已经在超内存的边缘了。 状态优化 如果node1到node2的路径能构成回文那node1 → \rightarrow →root → \rightarrow →node2 也能构成回文。起点或终点就是公共祖先 也符合。 单节点要排除因为不符合vv。 深度优先搜索的转移方程 vCnt[mask] 记录 各节点到root0的mask。 node1的压缩状态为:mask cnt vCnt[mask]-1 cnt ∑ j : 0 25 v C n t [ m a s k ( 1 j ) ] \sum_{j:0}^{25}vCnt[mask^(1j)] ∑j:025​vCnt[mask(1j)] 深度优先搜索的返回值 cnt/2。 代码 核心代码 class Solution { public:long long countPalindromePaths(vectorint parent, string s) {m_s s; vectorvectorint vNeiBo(parent.size());for (int i 1; i parent.size(); i){vNeiBo[parent[i]].emplace_back(i);}DFS(vNeiBo, 0, -1, 0);long long llRet 0;for (const auto [mask, cnt] : m_mMaskCount){llRet cnt*(cnt - 1);for (int j 0; j 26; j){const int iNewMask mask ^ (1 j);if (m_mMaskCount.count(iNewMask)){llRet cnt*m_mMaskCount[iNewMask];}}}return llRet / 2;}void DFS(vectorvectorint neiBo, int cur, int par, int parMask){parMask ^ (1 (m_s[cur]-a));m_mMaskCount[parMask];for (const auto next : neiBo[cur]){if (next par){continue;}DFS(neiBo, next, cur, parMask);}}unordered_mapint, long long m_mMaskCount;string m_s; };测试用例 templateclass T,class T2 void Assert(const T t1, const T2 t2) {assert(t1 t2); }templateclass T void Assert(const vectorT v1, const vectorT v2) {if (v1.size() ! v2.size()){assert(false);return;}for (int i 0; i v1.size(); i){Assert(v1[i], v2[i]);}}int main() { vectorint parent;string s;{Solution sln;parent { -1, 0, 0, 1, 1, 2 }, s acaabc;auto res sln.countPalindromePaths(parent, s);Assert(res,8);}{Solution sln;parent { -1, 0, 0, 0, 0 }, s aaaaa;auto res sln.countPalindromePaths(parent, s);Assert(res, 10);}}2023年11月版 class Solution{ public: long long countPalindromePaths(vectorparent, string s) { m_c parent.size(); m_str s; m_vNeiBo.assign(m_c, vector()); for (int i 0; i 26; i) { m_iVilidMask[i] 1 i; } m_llRet 0; m_mMaskNums.clear(); int iRoot -1; for (int i 0; i m_c; i) { if (-1 parent[i]) { iRoot i; } else { m_vNeiBo[parent[i]].emplace_back(i); } } dfs(iRoot,0); return m_llRet; } void dfs(int cur,int iMask) { const int curMask iMask ^ ( 1 (m_str[cur] - ‘a’)); for (int i 0; i 27; i) { const int iNeedMask m_iVilidMask[i] ^ curMask; if (m_mMaskNums.count(iNeedMask)) { m_llRet m_mMaskNums[iNeedMask]; } } m_mMaskNums[curMask]; for (const auto child : m_vNeiBo[cur]) { dfs(child, curMask); } } int m_iVilidMask[27] { 0 };//记录所有字符都是偶数和只有一个字符是奇数 vectorvector m_vNeiBo; std::unordered_mapint,int m_mMaskNums; int m_c; long long m_llRet 0;//不包括单节点的合法路径数 string m_str; }; 扩展阅读 视频课程 有效学习明确的目标 及时的反馈 拉伸区难度合适可以先学简单的课程请移步CSDN学院听白银讲师也就是鄙人的讲解。 https://edu.csdn.net/course/detail/38771 如何你想快速形成战斗了为老板分忧请学习C#入职培训、C入职培训等课程 https://edu.csdn.net/lecturer/6176 相关 下载 想高屋建瓴的学习算法请下载《喜缺全书算法册》doc版 https://download.csdn.net/download/he_zhidan/88348653 我想对大家说的话闻缺陷则喜是一个美好的愿望早发现问题早修改问题给老板节约钱。子墨子言之事无终始无务多业。也就是我们常说的专业的人做专业的事。如果程序是一条龙那算法就是他的是睛 测试环境 操作系统win7 开发环境 VS2019 C17 或者 操作系统win10 开发环境 VS2022 C17 如无特殊说明本算法用**C**实现。

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

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

相关文章

网站建设及优化网店美工实训报告总结体会

持续集成部署-k8s-配置与存储-配置管理:配置文件不可变 1. 配置文件不可变场景2. 配置 ConfigMap 为不可修改 1. 配置文件不可变场景 上一篇我们说到,对于 ConfigMap 的热更新操作,我们在创建了ConfigMap 之后,由于某种原因&…

毕业设计做APP好还是网站制作营销网页

在以前的博客文章中,我介绍了一些实现REST体系结构的想法和技巧。 在这篇文章中,我将介绍更多的想法和技巧。 快取 缓存是原始论文的很大一部分。 见5.1.4节 策略包括验证( 客户端检查它是否具有最新版本 )和到期( 客…

用typecho做的网站拓客系统

这篇文章主要是面向那些刚开始学AngularJs和想要了解数据绑定(data-binding)是怎么工作的, 如果你已经熟悉如何使用angularjs了,我强烈建议你不用阅读了。 angularjs使用者想要知道data-binding是如何工作的,就会遇到很…

有哪些网站可以做毕业设计网站建设分金手指专业十三

MATLAB R2023b 是 MathWorks 发布的最新版本的 MATLAB,适用于进行算法开发、数据可视化、数据分析以及数值计算等任务的工程师和科学家。它包含了一系列新增功能和改进,如改进了数据导入工具,增加了对数据帧和表格对象的支持,增强…

网站关键词突然没有排名了淄博平台公司

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《驱动系列》文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点…

沽源网站建设做购物网站实例代码

hadoop的伪分布模式 伪分布模式的特点部署伪分布模式hadoop-env.shhdfs-site.xmlcore-site.xmlmapred-site.xmlyarn-site.xml对NameNode进行格式化启动Hadoop 对部署是否完成进行测试免密码模式免密码模式的原理(重要)免密码模式的配置 伪分布模式的特点…

jsp做网站图片怎么存储廊坊网站制作官网

PICO 开发者中心概览 ADB 是一个轻量级的 Android 调试桥(Android Debug Bridge,简称 ADB),用于与 Android 设备进行通信和调试。ADB提供了许多有用的功能,使开发人员能够轻松地管理和调试设备上的应用程序。 你可以使用 PDC 工具来调试系统…

广东顺德网站建设玉林博白网站建设

本章主要为大家介绍java多态的概念,以及便于理解的多态简单例子。 Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力。 多态性是对象多种表现形式的体现。 比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比…

机械公司网站源码南京网站制作公司有哪些

(1)设备信息模块:记录设备的基本信息,如设备采购来源信息、设备需求量、当前数量、日期等。 (2) 用户模块:教师职工。实现对用户个人信息、消息管理和实验室设备的查询使用申请等。 (3) 管理员模块:实现对所有设备信息的增删改查&…

外贸企业建网站做航模的网站

最近遇到一个React上传组件的问题,即上传附件成功后,文件展示处仍然还有之前上传附件的缓存信息,需要解决的问题是,要把上一次上传的附件缓存在上传成功或者取消后,可以进行清除 经过一顿试错,终于解决了这…

上犹建设局网站安徽专业做网站的公司

npm create vuelatest相关创建代码:

可以做产品推广的网站长沙房地产市场

Node.js是由事件驱动的,每个任务都可以当作一个事件来处理,本贴将对Node.js中的events模块及其中处理事件的类EventEmitter的使用进行详细讲解。 1、EventEmitter对象 在JavaScript中,通过事件可以处理许多用户的交互,比如鼠标…

o2o好网站进入网站前如何做环境检测

原因1:数字锁没有打开 没有打开NumLock(数字小键盘上面有一个【Num】按键),需要按键开启。 注意要检查NumLock灯是否亮起。 或者改成用字母键上面的数字键输入就好了。 原因2:root密码设置错误(这个是比较常…

wordpress页面回收站位置动易医院网站管理系统

sqli-labs是一款学习SQL 注入的开源平台,共有75种不同类型的注入,在本书 的同步网站下载完压缩包后并解压,复制源码然后将其粘贴到网站的目录中,进入 MySQL 管理中的phpMyAdmin, 打开http://127.0.0.1/phpMyAdmin/, 在数据库…

在putty做网站要拷贝什么湘潭市建设网站

1、文件服务器:是一种网络服务器,他能够把共享文件夹或者是网络驱动器映射到本地计算机上面,这样企业里的用户都可以很方便的访问和共享文件,文件服务器还能够存储大量的数据,提供备份,安全性也很高&#x…

做的好的网站有哪些安徽网站建

文章目录 前言1. 同步以及命令传播1.1 同步1.2 命令传播 2. 解决从服务器断线重连2.1 解决方案 3. PSYNC命令4. 复制步骤1:设置主服务器的地址和端口步骤2:建立套接字连接 ——其实就是建立TCP连接步骤3:发送PING命令步骤4:身份验证步骤5:发送端口信息步骤6:同步步骤7:命令传播…

起零网站建设邢台柏乡县建设局网站

nginx:一个高性能、轻量级的web服务软件 1、稳定性高(没有apache稳) 2、系统资源消耗低(处理http请求的并发能力很高,单台物理服务器可以处理3万到5万个并发请求) 稳定:一般在企业中&#xff…

车票网站模板网站设计大概收费范围

一、源码特点 java Web运输公司管理系统是一套完善的java web信息管理系统 serlvetdaobean mvc 模式开发 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主 要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5…

网站建设教程 湖南岚鸿潍坊网站托管

本文由 Jonathan 译自 https://medium.muz.li/how-to-succeed-in-wireframe-design-2ab3cd5c4bc9我们常轻忽身边习以为常的事物,觉得没有必要为一些看似简单又可有可无的东西浪费时间——例如线框图。虽然没必要凡事都寻根问底,但当面对复杂问题时&#…

来年做哪个网站能致富网络基础知识

题目描述 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素…