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

【算法】P5018 对称二叉树

题目

P5018 对称二叉树
https://www.luogu.com.cn/problem/P5018

代码

思路:领接表存储二叉树,unordered_map存储各个节点对应的值。dfs遍历一下各个子树的大小个数,再写个递归判断是否是对称二叉树,如果是就更新全局答案。

#include <bits/stdc++.h>
#define endl '\n'using namespace std;const int N = 1e7 + 10;// 对于每个点k,开一个单链表,存储k所有可以走到的点。h[k]存储这个单链表的头结点(也就是邻接表)
int e[N], ne[N], h[N], st1[N], idx;unordered_map<int, int> mp;// 每个结点id对应的值
int max_n = 0; // 最大对称二叉树节点数量// 邻接表初始化
void init() {memset(h, -1, sizeof h);idx = 0;
}// 添加一条边a->b 
void add(int a, int b) {// 存下b的值,b下一个指向a的下一个节点,a的下一个节点指向be[idx] = b, ne[idx] = h[a], h[a] = idx ++;
}//p, q是指针
bool check(int p, int q) {if (mp[e[p]] == 0 && mp[e[q]] == 0) // 递归到结尾返回truereturn true;else if (mp[e[p]] == 0 || mp[e[q]] == 0) // 两个孩子有一个为空返回falsereturn false;else if (mp[e[p]] != mp[e[q]]) // 左孩子和右孩子不相同返回falsereturn false;return check(h[e[p]], ne[h[e[q]]]) && check(ne[h[e[p]]], h[e[q]]); // 左右两颗子树开始递归
}int dfs(int u) {if (mp[u] == 0) // 没有节点,返回0return 0;st1[u] = true;// st[u] 表示点u已经被遍历过int sum = 0;for (int i = h[u]; i != -1 ; i = ne[i]) {int j = e[i];if (st1[j]) continue;// 防止逆向dfsint s = dfs(j);sum += s; // 累加左孩子右孩子节点数}// 检查是不是对称二叉树,并更新答案if (check(h[u], ne[h[u]])) {max_n = max(max_n, sum + 1);}return sum + 1; // 返回当前节点的左孩子右孩子所有结点数+1
}int main() {cin.tie(0), cout.tie(0);init();mp[-1] = 0;int n;cin >> n;// 每个节点存下节点值for (int i = 1; i <= n; i ++) {int v;cin >> v;mp[i] = v;}// 插入左孩子右孩子for (int i = 1; i <= n; i ++) {int l, r;cin >> l >> r;add(i, r);add(i, l);}// 从1开始dfsdfs(1);cout << max_n << endl;return 0;
}

相关文章:

【算法】P5018 对称二叉树

题目 P5018 对称二叉树 https://www.luogu.com.cn/problem/P5018 代码 思路&#xff1a;领接表存储二叉树&#xff0c;unordered_map存储各个节点对应的值。dfs遍历一下各个子树的大小个数&#xff0c;再写个递归判断是否是对称二叉树&#xff0c;如果是就更新全局答案。 #…...

Unifying Top-down and Bottom-up Scanpath Prediction Using Transformers

Abstract 大多数视觉注意力模型旨在预测自上而下或自下而上的控制&#xff0c;这些控制通过不同的视觉搜索和自由观看任务进行研究。本文提出了人类注意力变换器&#xff08;Human Attention Transformer&#xff0c;HAT&#xff09;&#xff0c;这是一个能够预测两种形式注意力…...

JavaSE(十四)——文件操作和IO

文章目录 文件操作和IO文件相关概念Java操作文件文件系统操作文件内容操作字节流FileOutputStreamFileInputStream代码演示 字符流FileWriterFileReader代码演示 缓冲流转换流 案例练习 文件操作和IO 文件相关概念 文件 通常指的是包含用户数据的文件&#xff0c;如文本文件、…...

【视觉SLAM】4b-特征点法估计相机运动之PnP 3D-2D

文章目录 0. 前言1. PnP求解1.1 直接线性变换DLT1.2 P3P1.3 光束平差法BA2. 实现0. 前言 透视n点(Perspective-n-Point,PnP)问题是计算机视觉领域的经典问题,用于求解3D-2D的点运动。换句话说,当知道 N N N个世界坐标系中3D空间点的坐标以及它们在图像上的投影点像素坐标…...

android 性能分析工具(04)Asan 内存检测工具

1 Asan工具简介 1.1 Asan工具历史背景 AddressSanitizer&#xff08;ASan&#xff09;最初由Google开发&#xff0c;并作为LLVM项目的一部分。ASan的设计目的是帮助开发者检测并修复内存错误&#xff0c;如堆栈和全局缓冲区溢出、使用已释放的内存等&#xff0c;这些问题可能…...

html中select标签的选项携带多个值

搜索参考资料&#xff1a;SELECT标签中的选项可以携带多个值吗&#xff1f; 【摘抄】&#xff1a; 它可能有一个select选项中的多个值&#xff0c;如下所示。 <select id"ddlEmployee" class"form-control"> <option value"">-- S…...

Lambda表达式如何进行调试

一、概述 Java8提供了lambda表达式&#xff0c;方便我们对数据集合进行操作&#xff0c;我们使用lambda表达式的时候&#xff0c;是不是有这样的疑问&#xff0c;如何对执行过程中的中间数据进行调试呢&#xff1f; 二、例子 在下面的例子中&#xff0c;我们实现随机最多生成…...

C++ —— 剑斩旧我 破茧成蝶—C++11

江河入海&#xff0c;知识涌动&#xff0c;这是我参与江海计划的第2篇。 目录 1. C11的发展历史 2. 列表初始化 2.1 C98传统的{} 2.2 C11中的{} 2.3 C11中的std::initializer_list 3. 右值引用和移动语义 3.1 左值和右值 3.2 左值引用和右值引用 3.3 引用延长生命周期…...

HTML5好看的音乐播放器多种风格(附源码)

文章目录 1.设计来源1.1 音乐播放器风格1效果1.2 音乐播放器风格2效果1.3 音乐播放器风格3效果1.4 音乐播放器风格4效果1.5 音乐播放器风格5效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&…...

C++设计模式行为模式———迭代器模式中介者模式

文章目录 一、引言二、中介者模式三、总结 一、引言 中介者模式是一种行为设计模式&#xff0c; 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互&#xff0c; 迫使它们通过一个中介者对象进行合作。 中介者模式可以减少对象之间混乱无序的依赖关系&…...

FFmpeg 4.3 音视频-多路H265监控录放C++开发十五,解码相关,将h264文件进行帧分隔变成avpacket

前提 前面我们学习了 将YUV数据读取到AVFrame&#xff0c;然后将AVFrame通过 h264编码器变成 AVPacket后&#xff0c;然后将avpacket直接存储到了本地就变成了h264文件。 这一节课&#xff0c;学习解码的一部分。我们需要将 本地存储的h264文件进行帧分隔&#xff0c;也就是变…...

力扣 LeetCode 104. 二叉树的最大深度(Day7:二叉树)

解题思路&#xff1a; 采用后序遍历 首先要区别好什么是高度&#xff0c;什么是深度 最大深度实际上就是根节点的高度 高度的求法是从下往上传&#xff0c;从下往上传实际上就是左右中&#xff08;后序遍历&#xff09; 深度的求法是从上往下去寻找 所以采用从下往上 本…...

如何高效实现汤臣倍健营销云数据集成到SQLServer

新版订单同步-&#xff08;Life-Space&#xff09;江油泰熙&#xff1a;汤臣倍健营销云数据集成到SQL Server 在企业信息化建设中&#xff0c;数据的高效集成和管理是提升业务运营效率的关键。本文将分享一个实际案例——如何通过新版订单同步方案&#xff0c;将汤臣倍健营销云…...

Vue3中使用:deep修改element-plus的样式无效怎么办?

前言&#xff1a;当我们用 vue3 :deep() 处理 elementui 中 el-dialog_body和el-dislog__header 的时候样式一直无法生效&#xff0c;遇到这种情况怎么办&#xff1f; 解决办法&#xff1a; 1.直接在 dialog 上面增加class 我试过&#xff0c;也不起作用&#xff0c;最后用这种…...

具身智能之Isaac Gym使用

0. 简介 Isaac Gym 是由 NVIDIA 提供的一个高性能仿真平台&#xff0c;专门用于大规模的机器人学习和强化学习&#xff08;RL&#xff09;任务。它结合了物理仿真、GPU加速、深度学习框架互操作性等特点&#xff0c;使得研究人员和开发者可以快速进行复杂的机器人仿真和训练。…...

【大数据学习 | Spark】spark-shell开发

spark的代码分为两种 本地代码在driver端直接解析执行没有后续 集群代码&#xff0c;会在driver端进行解析&#xff0c;然后让多个机器进行集群形式的执行计算 spark-shell --master spark://nn1:7077 --executor-cores 2 --executor-memory 2G sc.textFile("/home/ha…...

《Python制作动态爱心粒子特效》

一、实现思路 粒子效果&#xff1a; – 使用Pygame模拟粒子运动&#xff0c;粒子会以爱心的轨迹分布并运动。爱心公式&#xff1a; 爱心的数学公式&#xff1a; x16sin 3 (t),y13cos(t)−5cos(2t)−2cos(3t)−cos(4t) 参数 t t 的范围决定爱心形状。 动态效果&#xff1a; 粒子…...

Jmeter 如何导入证书并调用https请求

Jmeter 如何导入证书并调用https请求 通过SSL管理器添加证书文件 支持添加的文件为.p12&#xff0c;.pfx&#xff0c;.jks 如何将pem文件转换为pfx文件&#xff1f; 在公司内部通常会提供3个pem文件。 ca.pem&#xff1a;可以理解为是根证书&#xff0c;用于验证颁发的证…...

Python程序15个提速优化方法

目录 Python程序15个提速优化方法1. 引言2. 方法一&#xff1a;使用内建函数代码示例&#xff1a;解释&#xff1a; 3. 方法二&#xff1a;避免使用全局变量代码示例&#xff1a;解释&#xff1a; 4. 方法三&#xff1a;使用局部变量代码示例&#xff1a;解释&#xff1a; 5. 方…...

足球虚拟越位线技术FIFA OT(二)

足球虚拟越位线技术FIFA OT&#xff08;二&#xff09; 在FIFA认证测试过程中&#xff0c;留给VAR系统绘制越位线的时间只有90秒&#xff08;在比赛中时间可能更短&#xff09;&#xff0c;那么90秒内要做什么事呢&#xff0c;首先场地上球员做出踢球动作&#xff0c;然后VAR要…...

Linux桌面定制——快速迁移状态栏位置的终端技巧

1. 为什么需要调整状态栏位置 第一次用Unity桌面时&#xff0c;我就被左侧的状态栏搞得浑身难受。作为常年使用Windows的用户&#xff0c;总觉得状态栏就该乖乖待在屏幕底部。后来发现不少Linux新手都有类似的困扰——明明是个高效的操作系统&#xff0c;却因为这种小细节影响使…...

深入解析UniApp中的package.json:从基础配置到高级技巧

1. 初识UniApp中的package.json 第一次接触UniApp项目时&#xff0c;我盯着package.json文件看了半天&#xff0c;心想这不就是个管理npm包依赖的配置文件吗&#xff1f;直到踩了几个坑才发现&#xff0c;UniApp对这个文件做了特殊扩展&#xff0c;让它成为了项目配置的中枢神经…...

asp毕业设计下载(全套源码+配套论文)——基于asp+access的会员管理系统设计与实现

基于aspaccess的会员管理系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于aspaccess的会员管理系统设计与实现&#xff0c;更多精选毕业设计项目实例见文末哦。 文章目录&#xff1a; 基于aspaccess的会员管理系统设计与实现&a…...

Seed-Coder-8B-Base体验报告:这个开源代码模型到底强在哪里?

Seed-Coder-8B-Base体验报告&#xff1a;这个开源代码模型到底强在哪里&#xff1f; 1. 开篇&#xff1a;为什么选择Seed-Coder-8B-Base 在代码生成模型的海洋中&#xff0c;Seed-Coder-8B-Base以其独特的优势脱颖而出。作为字节团队开源的8B参数级模型&#xff0c;它不仅体积…...

ChatGPT聊天记录导出实战:自动化归档与高效管理方案

ChatGPT聊天记录导出实战&#xff1a;自动化归档与高效管理方案 作为一名经常和ChatGPT讨论技术问题的开发者&#xff0c;我发现自己遇到了一个甜蜜的烦恼&#xff1a;聊得越多&#xff0c;积累的“宝藏对话”就越多。这些对话里可能藏着某个复杂问题的解决思路、一段精妙的代…...

MacOS极简部署OpenClaw:GLM-4.7-Flash云端沙盒体验

MacOS极简部署OpenClaw&#xff1a;GLM-4.7-Flash云端沙盒体验 1. 为什么选择云端沙盒体验 作为一个长期在本地折腾各种AI工具的技术爱好者&#xff0c;我最近被OpenClaw的自动化能力深深吸引。但在第一次尝试本地部署时&#xff0c;就被Node环境配置、依赖冲突等问题劝退。直…...

Python实战:5分钟用高德API搞定全国区县边界坐标采集(附完整代码)

Python实战&#xff1a;高德API高效获取全国区县边界坐标的工程化解决方案 1. 需求背景与方案设计 地理信息系统开发中经常需要精确的行政区划边界数据。传统手动采集方式效率低下&#xff0c;而高德地图API提供了完善的行政区划查询接口。本方案将实现&#xff1a; 全国省/…...

AI 辅助开发实战:构建高可用毕设深度学习系统的工程化路径

最近在帮学弟学妹们看毕业设计&#xff0c;发现一个挺普遍的现象&#xff1a;很多同学算法思路不错&#xff0c;但一到工程实现就各种“翻车”。环境配一天跑不起来&#xff0c;模型调参全靠手动“玄学”&#xff0c;好不容易训出来的模型&#xff0c;不知道怎么部署给别人用。…...

【前沿解析】2026年3月25日:从机器人协同到全模态AI生态——中关村论坛与昆仑万维双重突破定义AI产业新范式

摘要:2026年3月25日,北京中关村论坛盛大开幕,展示了跨品牌机器人协同服务与昆仑万维三大世界第一梯队模型的突破进展。本文深入解析具身智能机器人“组团上岗”的技术原理、昆仑万维Matrix-Game 3.0、SkyReels V4、Mureka V9的全模态能力,以及产业协同生态的战略价值,涵盖…...

SEO_从基础到进阶的SEO完整优化方案介绍

SEO基础&#xff1a;理解SEO的核心概念和基本原则 在当今互联网时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;是每个网站拥有良好流量和高曝光度的关键。本文将从基础到进阶&#xff0c;为你介绍一个完整的SEO优化方案。我们将一步步深入了解SEO的核心概念和基本原…...