当前位置:网站首页>Luogu p5018 [noip2018 popularization group] symmetric binary tree problem solution
Luogu p5018 [noip2018 popularization group] symmetric binary tree problem solution
2022-07-03 14:27:00 【q779】
Luogu P5018 [NOIP2018 Popularization group ] Symmetric binary tree Answer key
Topic link :P5018 [NOIP2018 Popularization group ] Symmetric binary tree
The question :
If a rooted tree with some weight meets the following conditions , Is called symmetric binary tree by Xuanxuan :
- Binary tree ;
- Swap the left and right subtrees of all nodes of this tree , The structure of the corresponding position of the new tree and the original tree is the same and the point weight is equal .
The number in the node in the figure below is the weight , Out of node i d id id Indicates the node number .
Now give a binary tree , I hope you find a subtree of it , The subtree is a symmetric binary tree , And the number of nodes most . Please output the number of nodes of this subtree .
Be careful : A tree with only its roots is also a symmetric binary tree . It is agreed in this question , To the node T T T A tree that is the root of a child tree “ Son Trees ” refer to : node T T T And all its descendant nodes .
【 Data scale and agreement 】
common 25 25 25 A test point .
v i ≤ 1000 v_i ≤ 1000 vi≤1000.
Test point 1 ∼ 3 , n ≤ 10 1 \sim 3, n ≤ 10 1∼3,n≤10, Ensure that all nodes of the left subtree of the root node have no right children , Right of root node All nodes of the subtree have no left children .
Test point 4 ∼ 8 , n ≤ 10 4 \sim 8, n ≤ 10 4∼8,n≤10.
Test point 9 ∼ 12 , n ≤ 1 0 5 9 \sim 12, n ≤ 10^5 9∼12,n≤105, Ensure that the input is a “ Full binary tree ” .
Test point 13 ∼ 16 , n ≤ 1 0 5 13 \sim 16, n ≤ 10^5 13∼16,n≤105, Ensure that the input is a “ Perfect binary tree ”.
Test point 17 ∼ 20 , n ≤ 1 0 5 17 \sim 20, n ≤ 10^5 17∼20,n≤105, Ensure that the point weight of the input tree is 1 1 1.
Test point 21 ∼ 25 , n ≤ 1 0 6 21 \sim 25, n ≤ 10^6 21∼25,n≤106.
For every point of direct violence dfs Its left and right subtrees can be judged
Pay attention to the direction of symmetry and don't write it wrong
Time complexity O ( n log n ) O(n \log n) O(nlogn)
Why won't the chain get stuck , Because the intermediate judgment is equivalent to pruning off
Only the complete binary tree will arrive O ( n log n ) O(n \log n) O(nlogn)
Code :
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iomanip>
using namespace std;
#define int long long
#define INF 0x3f3f3f3f3f3f3f3f
#define N (int)(1e6+15)
int n,ch[N][2],val[N],sz[N];
#define ls(x) ch[x][0]
#define rs(x) ch[x][1]
void dfs(int u)
{
sz[u]=1;
if(ls(u)!=-1)
{
dfs(ls(u));
sz[u]+=sz[ls(u)];
}
if(rs(u)!=-1)
{
dfs(rs(u));
sz[u]+=sz[rs(u)];
}
}
bool solve(int u,int v)
{
if(u==-1&&v==-1)return 1;
if(u==-1||v==-1)return 0;
return val[u]==val[v]&&solve(ls(u),rs(v))&&solve(rs(u),ls(v));
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// freopen("check.in","r",stdin);
// freopen("check.out","w",stdout);
cin >> n;
for(int i=1; i<=n; i++)
cin >> val[i];
for(int i=1; i<=n; i++)
cin >> ls(i) >> rs(i);
dfs(1);
int ans=0;
for(int i=1; i<=n; i++)
if(solve(ls(i),rs(i)))
ans=max(ans,sz[i]);
cout << ans << '\n';
return 0;
}
Reprint please explain the source
边栏推荐
- NFT新的契机,多媒体NFT聚合平台OKALEIDO即将上线
- Accelerating strategy learning using parallel differentiable simulation
- 7-6 mixed type data format input
- Tailing rushes to the scientific and Technological Innovation Board: it plans to raise 1.3 billion, and Xiaomi Changjiang is the shareholder
- 适用于XP的DDK
- 【7.3】146. LRU缓存机制
- 全文检索引擎Solr系列—–全文检索基本原理
- Exercise 6-6 use a function to output an integer in reverse order
- Doris学习笔记之数据表的创建
- Bibit pharmaceutical rushed to the scientific innovation board: annual revenue of 970000, loss of 137million, proposed to raise 2billion
猜你喜欢

Exercise 9-1 time conversion

【北大青鸟昌平校区】互联网行业中,哪些岗位越老越吃香?

MySQL multi table query subquery

concat和concat_ws()区别及group_concat()和repeat()函数的使用

Exercise 8-8 moving letters

牛客网:过河卒

X86 assembly language - Notes from real mode to protected mode

7-9 find a small ball with a balance

puzzle(016.4)多米诺效应

Fabric. JS document
随机推荐
MongoDB数据库入门的常用命令
Frequently asked questions: PHP LDAP_ add(): Add: Undefined attribute type in
7-8 overspeed judgment
MySQL multi table query subquery
allegro,orcad, net alias,port,off-page connector之间的异同点和如何选取
Why don't I have a rookie medal
Eight sorts
Programming language: the essence of type system
Special research report on the market of lithium battery electrolyte industry in China (2022 Edition)
Too many files with unapproved license
论文分享:Generating Playful Palettes from Images
7-18 finding the single root of polynomial by dichotomy
ZABBIX saves the page blank after adding calculated items
Similarities and differences between Allegro, OrCAD, net alias, port, off page connector and how to select them
Exercise 10-3 recursive implementation of exponential functions
X86 assembly language - Notes from real mode to protected mode
Leetcode(4)——尋找兩個正序數組的中比特數
JVM garbage collector
别再问自己适不适合做软件测试了
【7.3】146. LRU缓存机制
