当前位置:网站首页>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
边栏推荐
- 添加Zabbix计算类型项目Calculated items
- JS get DPI, PX to cm, cm to PX
- GRPC的四种数据流以及案例
- puzzle(016.3)千丝万缕
- 泰凌冲刺科创板:拟募资13亿 国家大基金与小米长江是股东
- Bibit pharmaceutical rushed to the scientific innovation board: annual revenue of 970000, loss of 137million, proposed to raise 2billion
- 中国PETG市场预测及战略研究报告(2022版)
- DDK for XP
- Selective sorting
- JVM garbage collector
猜你喜欢

论文分享:Generating Playful Palettes from Images

Solution to failure or slow downloading of electron when electron uses electron builder to package

MySQL multi table query subquery

Paper sharing: generating playful palettes from images

TS code automatically generates JS

Leetcode(4)——寻找两个正序数组的中位数

Leetcode(4)——尋找兩個正序數組的中比特數

puzzle(016.3)千丝万缕

Understand the application scenario and implementation mechanism of differential segment

7-15 calculation of PI
随机推荐
Concat and concat_ Ws() differences and groups_ Use of concat() and repeat() functions
Leetcode(4)——寻找两个正序数组的中位数
Sword finger offer 28 Symmetric binary tree
NFT新的契机,多媒体NFT聚合平台OKALEIDO即将上线
NPM install is stuck with various strange errors of node NPY
GRPC的四种数据流以及案例
愉悦资本新双币基金近40亿元完成首次关账
中感微冲刺科创板:年营收2.4亿净亏1782万 拟募资6亿
puzzle(016.4)多米诺效应
Leetcode(4)——尋找兩個正序數組的中比特數
Sendmail无法发送邮件及发送过慢解决
MySQL multi table query subquery
SSH访问控制,多次失败登录即封掉IP,防止暴力破解
Protobuf and grpc
TS code automatically generates JS
7-19 check denomination (solve binary linear equation)
一文了解微分段应用场景与实现机制
Common commands for getting started with mongodb database
Thinking about the arrangement problem in the backtracking problem (leetcode questions 46 and 47)
Zabbix添加Calculated items后保存页面成空白
