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

洛谷P15901题解

题目描述

给定一棵包含 n 个结点的有根二叉树,结点依次以 1,2,…,n 编号,根结点编号为 1。

对于结点 i,其左儿子的编号记为 li​,右儿子编号记为 ri​。特别地,如果左儿子不存在则 li​=0,如果右儿子不存在则 ri​=0。

树中每个结点都对应一棵以其为根的子树。请你求出给定有根树的所有 n 棵子树中,有多少棵子树是完全二叉树。

输入格式

第一行,一个正整数 n,表示有根二叉树结点数量。

接下来 n 行,每行两个正整数 li​,ri​,表示结点 i 的左儿子编号和右儿子编号。

输出格式

输出一行,一个整数,表示所有子树中完全二叉树的数量。

思路

一道树形dp

以一个节点为根树是完全二叉树:左右结点为根的树 高度相同&&左结点为满二叉树&&右结点为完全二叉树 or 左完全&&右满

#include<bits/stdc++.h> using namespace std; #define N 100005 #define int long long struct node{ int l,r; }; node a[N]; int dp[N],h[N]; int ans,n; void dfs(int u,int depth){ h[u]=depth; if (a[u].l>0){ dfs(a[u].l,depth+1); h[u]=max(h[u],h[a[u].l]); } if(a[u].r>0){ dfs(a[u].r,depth+1); h[u]=max(h[u],h[a[u].r]); } if (a[u].l==0&&a[u].r==0) dp[u]=2; else if(a[u].r==0&&h[a[u].l]==depth+1) dp[u]=1; else if(h[a[u].l]==h[a[u].r]){ if(dp[a[u].l]==2&&dp[a[u].r]==2) dp[u]=2; else if(dp[a[u].l]==2&&dp[a[u].r]==1) dp[u]=1; } else if(h[a[u].l]==h[a[u].r]+1) { if((dp[a[u].l]==1||dp[a[u].l]==2)&&dp[a[u].r]==2) dp[u]=1; } ans+=(dp[u]>0); } signed main() { cin>>n; for (int i=1;i<=n;i++){ cin>>a[i].l>>a[i].r; } dfs(1,0); cout<<ans; }
http://www.jsqmd.com/news/567828/

相关文章:

  • 3分钟学会VideoSrt:免费开源的视频字幕自动生成神器
  • 开源大模型的小白实操
  • 在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案
  • Go语言中的Interface:面向接口编程
  • 春联生成模型-中文-base多模型对比:选择最适合你业务的开源模型
  • 深度学习项目训练环境中的SpringBoot应用部署指南
  • 实战演练:基于快马与豆包开放平台,快速开发智能邮件处理助手
  • Android音频调试实战:Audio log解析与设备连接状态追踪
  • 终极静音方案:FanControl风扇控制完全指南,5分钟告别电脑噪音烦恼
  • 告别PX4:在APM Rover固件下用MAVROS控制Pixhawk无人车的完整流程(附避坑点)
  • OpenRPA企业级自动化平台:从技术架构到财务场景落地实践指南
  • Mac Mouse Fix:让普通鼠标焕发专业级体验的开源方案
  • Apache SeaTunnel 4月回顾:明星贡献者与技术突破
  • 基于PLC控制的水塔水位监测与调节系统设计——实现智能化管理与节能优化方案
  • Eplan P2.8培训,全面讲解,专业老师,是电气自动化工程师画图上手必经之路
  • 手把手教你用STM32F103C8T6和JDY-23蓝牙模块做个手机遥控小夜灯(附完整代码)
  • 使用RexUniNLU优化.NET文档处理流程的实战指南
  • 示波器测量UART波特率的原理与实践
  • 吃透 SAP Fiori 导航:从 Inner-App Navigation 到 Cross-App Navigation 的设计原则与实现策略
  • WebDAV网盘横向评测:从个人备份到多端同步的实战指南
  • ClawHub 是什么?
  • 多晶陶瓷的电击穿路径(电树枝)的模拟仿真。 采用二维模型模拟电介质在电场作用下介电击穿电树枝分...
  • 终极指南:如何在Windows系统快速安装macOS风格鼠标指针美化包
  • 2023年C语言项目精选与系统开发实践
  • ClickHouse:大数据领域的实时分析新宠
  • 即插即用系列 | TGRS 2026 | CGTA:曲率引导标记注意力!线性复杂度全局建模,几何结构保真与长程关联双突破 | 代码分享
  • 实战应用:基于快马平台构建可部署的智能学科辅导助手
  • 洛雪音乐音源终极指南:免费获取全网高品质音乐资源的完整教程
  • 信创云桌面如何兼容鲲鹏与飞腾国产处理器?
  • WSL + OpenCode 最佳实践:环境一致、模型配置、GUI 远程使用