当前位置:网站首页>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
边栏推荐
- etcd集群权限管理和账号密码使用
- Exercise 6-1 classify and count the number of characters
- ZABBIX saves the page blank after adding calculated items
- Sendmail can't send mail and it's too slow to send. Solve it
- 【北大青鸟昌平校区】互联网行业中,哪些岗位越老越吃香?
- 7-15 calculation of PI
- fpga阻塞赋值和非阻塞赋值
- Accelerating strategy learning using parallel differentiable simulation
- Understanding of closures
- J-luggage lock of ICPC Shenyang station in 2021 regional games (simple code)
猜你喜欢

7-18 finding the single root of polynomial by dichotomy

Fabric. JS document

puzzle(016.4)多米诺效应

retrofit

如何查询淘宝天猫的宝贝类目

Frequently asked questions: PHP LDAP_ add(): Add: Undefined attribute type in

一文了解微分段应用场景与实现机制

Zhonggan micro sprint technology innovation board: annual revenue of 240million, net loss of 17.82 million, proposed to raise 600million

Why is this error reported when modifying records in the database

Paper sharing: generating playful palettes from images
随机推荐
Exercise 8-2 calculate the sum and difference of two numbers
Interface for querying IP home
愉悦资本新双币基金近40亿元完成首次关账
Paper sharing: generating playful palettes from images
Exercise 9-1 time conversion
US stock listing of polar: how can the delivery of 55000 units support the valuation of more than 20billion US dollars
数学常数表 by q779
ZABBIX saves the page blank after adding calculated items
中感微冲刺科创板:年营收2.4亿净亏1782万 拟募资6亿
中国锂电池电解液行业市场专项调研报告(2022版)
Leetcode (4) -- find the median of two positively ordered arrays
Programming language: the essence of type system
7-22 tortoise and rabbit race (result oriented)
别再问自己适不适合做软件测试了
Understand the application scenario and implementation mechanism of differential segment
Exercise 9-3 plane vector addition
Strategy, tactics (and OKR)
适用于XP的DDK
TS code automatically generates JS
7-20 print 99 formula table (format output)
