PJ2018T4 对称二叉树 树形结构

题意:现在给出一棵二叉树,希望你找出它的一棵子树,该子树为对称二叉树,且节点数最多。请输出这棵子树的节点数。对称二叉树满足:将这棵树所有节点的左右子树交换后,新树和原树对应位置的结构相同且点权相等。

(注意输入的是当前节点的左儿子和右儿子,若输入-1则表示该位置不存在点)

 

数据范围:n <= 1000000.

------------------------------------------我是分割线------------------------------------

题解: 首先预处理每棵子树的大小,用size[x]表示x的子树大小,接下来直接枚举每个点检验即可,非常简单。

 

#include<bits/stdc++.h>#define ll long long
#define mp make_pair
#define rep(i, a, b) for(int i = (a); i <= (b); i++)
#define per(i, a, b) for(int i = (a); i >= (b); i--)using namespace std;typedef pair<int, int> pii;
typedef double db;
const int N = 1e6 + 50;
int n, head[N], cnt = 0, a[N];
int size[N], f[N], lson[N], rson[N];
int ans;
inline int read(){int x = 0, f = 1;char ch = getchar();while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar();}while(ch >='0' && ch <='9') { x = (x<<3)+(x<<1)+(ch^48); ch = getchar();}return x*f;
}
void init(){n = read();rep(i, 1, n) a[i] = read();rep(i, 1, n) {lson[i] = read(); rson[i] = read();}
}
void dfs(int x){size[x] = 1;if(lson[x] != -1){dfs(lson[x]);size[x] += size[lson[x]];}if(rson[x] != -1){dfs(rson[x]);size[x] += size[rson[x]];}return;
}
bool check(int u, int v){if(u == -1 && v == -1) return true;if(u != -1 && v != -1 && a[u] == a[v] && check(lson[u], rson[v]) && check(rson[u], lson[v]))return true;return false; 
}
void work(){dfs(1); rep(i, 1, n) {if(check(lson[i], rson[i]))ans = max(ans, size[i]);}printf("%d\n", ans);
}
int main(){init();work();return 0;
}
View Code

 

(刷水题不是我的本意,愉悦身心才是我的真正目的qwq).

 

转载于:https://www.cnblogs.com/smilke/p/11580523.html

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

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

相关文章

Flex的事件(十四)

一、 关于键盘事件<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />程序响应一个按键或一系列按键并执行一些动作&#xff0c;例如Controlq退出程序。Flex支持所有来自后台操作系统的所有组合键操作&#xff0c;它同样允许你覆…

EditPlus构建轻量级编译环境

你还在为机子跑VS&#xff0c;VC6.0吃力而苦恼吗&#xff1f;最近发现网上一个小窍门&#xff0c;就是用EditPlus文本编辑器构建轻量级编译环境&#xff0c; 轻量级的东西就是受人喜欢&#xff0c;要不说Spring能流行起来呢。最近自学C#&#xff0c;有了Java思想&#xff0c;加…

OCP-052考试题库汇总(58)-CUUG内部解答版

In one of your databases: 1.USER1 and USER2 have no system privileges. 2.ROLE1 only has these privileges: ?CREATE SESSION ?CREATE TABLE ?CREATE VIEW Examine these commands: SQL> conn / as sysdba Connected. SQL> GRANT create table, role1 TO user1 W…

提高ASP.Net应用程序性能的十大方法

一、返回多个数据集 检查你的访问数据库的代码&#xff0c;看是否存在着要返回多次的请求。每次往返降低了你的应用程序的每秒能够响应请求的次数。通过在单个数据库请求中返回多个结果集&#xff0c;可以减少与数据库通信的时间&#xff0c;使你的系统具有扩展性&#xff0c;…

【NOIP2015提高组】子串 区间DP+滚动数组优化

题意&#xff1a; 有两个仅包含小写英文字母的字符串 A 和 B。 现在要从字符串 A 中取出 k 个互不重叠的非空子串&#xff0c;然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一个新的字符串。 请问有多少种方案可以使得这个新串与字符串 B 相等&#xff1f; …

教你如何去淘便宜机票

机票四月二十日集体变相涨价后&#xff0c;中央电视台曾经报道&#xff0c;今后没有5折以下机票&#xff0c;今后也不再叫多少折&#xff0c;而是直接报价&#xff0c;但是春秋航空不再此之列&#xff0c;原因是这次变相提价是一个叫中航信公司在操作&#xff0c;他们不代理春秋…

使用kibana或postman操作Elasticsearch的常用命令

前言服务器&#xff1a;CentOS-6.7 运行系统&#xff1a;windows10 JDK版本&#xff1a;1.8 Elasticsearch版本&#xff1a;5.6.6 插件&#xff1a;kibana、elasticsearch-head 工具&#xff1a;postman 一、集群查看集群是否健康 GET /_cluster/health二、节点查看节点列表后面…

asp.net 实现一级域名与二级域名共享COOKIE

COOKIE可以自动由子级域名分享&#xff0c;无须做什么特别设置。对网站www.abc.com&#xff0c;check.abc.com来说&#xff0c;它们都是二级域名&#xff0c;一级域名是abc.com。所以&#xff0c;保存COOKIE的时候&#xff0c;将Cookie的Domain设置成“.abc.com”&#xff0c;无…

32位单精度浮点乘法器的FPGA实现

摘 要: 采用Verilog HDL语言, 在FPGA上实现了32位单精度浮点乘法器的设计, 通过采用改进型Booth编码&#xff0c;和Wallace 树结构, 提高了乘法器的速度。本文使用Altera Quartus II 4.1仿真软件, 采用的器件是EPF10K100EQ 240 -1, 对乘法器进行了波形仿真, 并采用0.5CMOS工艺…

Elasticsearch修改字段之别名,扩展数据迁移

https://blog.csdn.net/amaranth__/article/details/84497075 转载于:https://www.cnblogs.com/zeenzhou/p/11588599.html

网工视频13第13章.计算机系统开发运行与配置疑难问题

网工视频请留下你的邮箱&#xff0c;我给你发邮件。转载于:https://blog.51cto.com/ricebetter2010/155609

ES 基本操作

0.查看集群是否健康GET /_cluster/health 1.查询所有索引GET /_cat/indices?v 2.查询单个索引的映射GET /index_trans_detail/_mapping 3.删除indexDELETE /index_trans_detail,index_two 4. 添加字段映射PUT /index_trans_detail/_mapping/type_trans_detail{ "properti…

我们的运动会

不久前&#xff0c;我们举办了微软中国研发集团的首届运动会。遗憾的是&#xff0c;当时我自己由于公务在身没能参加。事后同事们把许多精彩的图片与我分享&#xff0c;让我十分羡慕他们有机会大显身手&#xff0c;现在贴出来让大家看看他们的飒爽英姿&#xff0c;一睹为快。运…

ES建立索引步骤, 1,index 2.mapping 3,别名

1.建立索引PUT /index_trans_detail 2.建立mappingPOST /index_trans_detail/type_trans_detail/_mapping{ "type_trans_detail": { "properties": { "id": { "type": "long" }, "entId": { "type": &q…

java路径问题

Java路径 Java中使用的路径&#xff0c;分为两种&#xff1a;绝对路径和相对路径。具体而言&#xff0c;又分为四种&#xff1a; 一、URI形式的绝对资源路径 如&#xff1a;file:/D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b URL是URI的特例。URL的前缀/协议&#xff0c;…

题解P1613跑路

今天没什么好说的那我就卖个萌吧(&#xff5e;&#xffe3;▽&#xffe3;)&#xff5e; Luogu 一道思维题可能仅是对我来说&#xff0c;对于大佬们都是显然的 简化题意 给你一个图&#xff0c;找到一个路径&#xff0c;使其路径的二进制位中\(1\)的个数最少 分析 这题的题目就…

路由重分布列表控制例子

OSPF与RIP路由重分布配置&#xff0c;使用重分布列表&#xff0c;对分布的路由进行控制的配置如上例图所示&#xff1a;“RIP与OSPF路由重分布例子”switchA(config)#router ripswitchA(config-router)#network 192.168.10.0switchA(config-router)#network 192.168.20.0switch…

git随笔

repo init -u ssh://wangxygit.fd565.com:29418/Product/F3/Lichee.git rm .repo/ -rf rm ~/.ssh/* -rf ssh-keygen cat ~/.ssh/id_rsa.pu repo sync -j8 —————————————————————————————————————————————————————————…

F#入门书籍

作为 Microsoft .NET Framework 家族的新成员&#xff0c;F# 提供类型安全、性能以及类似脚本语言的工作能力&#xff0c;所有这些都是 .NET 环境的一部分。此函数式语言由 Microsoft 研究院的 Don Syme 发明&#xff0c;作为 CLR 的 OCaml 语法兼容变体&#xff0c;但 F# 已经…

OCP-052考试题库汇总(59)-CUUG内部解答版

In one of your databases: 1.USER1 and USER2 have no system privileges. 2.ROLE1 only has these privileges: ?CREATE SESSION ?CREATE TABLE ?CREATE VIEW Examine these commands: SQL> conn / as sysdba Connected. SQL> GRANT create table, role1 TO user1 W…