2021.08.09 P5018 对称二叉树(树形结构)
2021.08.09 P5018 对称二叉树(树形结构)
[P5018 NOIP2018 普及组] 对称二叉树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题意:
求一棵子树,关于该子树根节点轴对称的节点数最大。
分析:
暴力。
代码如下:
40tps
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e6+10;
int n,val[N],ans;
struct node{
int l,r,flag,sum,val,size;
}a[N];
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
void dfs(int x,int flag){
//fa[x]=f;dep[x]=dep[fa[x]]+1;
if(!x)return ;
//a[x].flag=flag;a[x].val=val[x];
//a[x].maxn=dep[x];
a[x].flag=flag;
a[x].sum=a[x].val=flag*a[x].val;
//a[x].val直接读入
a[x].size=1;
dfs(a[x].l,1);dfs(a[x].r,-1);
a[x].sum+=a[a[x].l].sum+a[a[x].r].sum;
//a[x].maxn=max(a[x].maxn,max(a[a[x].l].maxn,a[a[x].r].maxn));
a[x].size+=(a[a[x].l].size+a[a[x].r].size);
if(a[x].sum==a[x].val&&a[a[x].l].size==a[a[x].r].size&&a[a[x].l].sum==-a[a[x].r].sum)ans=max(ans,a[x].size);
}
int main(){
n=read();
for(int i=1;i<=n;i++)a[i].val=read();
for(int i=1;i<=n;i++){
a[i].l=read();a[i].r=read();
if(a[i].l==-1)a[i].l=0;
if(a[i].r==-1)a[i].r=0;
//cout<<i<<" "<<a[i].l<<" "<<a[i].r<<endl;
}
dfs(1,1);
//for(int i=1;i<=n;i++)
//cout<<i<<" l "<<a[i].l<<" r "<<a[i].r<<" flag "<<a[i].flag<<" val "<<a[i].val<<" size "<<a[i].size<<" sum "<<a[i].sum<<endl;
cout<<ans;
return 0;
}
100tps
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e6+10;
int n;
struct node{
int l,r,size,val;
}a[N];
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
void dfs(int x){
a[x].size=1;
if(a[x].l)dfs(a[x].l),a[x].size+=a[a[x].l].size;
if(a[x].r)dfs(a[x].r),a[x].size+=a[a[x].r].size;
}
bool check(int x,int y){
if(!x&&!y)return true;
if(x&&y&&a[x].val==a[y].val&&check(a[x].l,a[y].r)&&check(a[x].r,a[y].l))
return true;
return false;
}
int main(){
n=read();
for(int i=1;i<=n;i++)a[i].val=read();
for(int i=1;i<=n;i++){
a[i].l=read();a[i].r=read();
if(a[i].l==-1)a[i].l=0;
if(a[i].r==-1)a[i].r=0;
}
dfs(1);
int ans=0;
for(int i=1;i<=n;i++)if(check(a[i].l,a[i].r))ans=max(ans,a[i].size);
cout<<ans;
return 0;
}
2021.08.09 P5018 对称二叉树(树形结构)的更多相关文章
- 2021.08.06 P3478 STA-Station(树形结构)
2021.08.06 P3478 STA-Station(树形结构) [P3478 POI2008]STA-Station - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 给 ...
- 2021.08.09 P5658 括号树(树形结构)
2021.08.09 P5658 括号树(树形结构) [P5658 CSP-S2019] 括号树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 太长,在链接中. 分析及代码 ...
- 2021.08.09 P7238 迷失森林(树的直径)
2021.08.09 P7238 迷失森林(树的直径) P7238 「DCOI」迷失森林 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.树的直径两种求法:两次dfs.树 ...
- 2021.08.09 P4868 Preprefix sum(树状数组)
2021.08.09 P4868 Preprefix sum(树状数组) P4868 Preprefix sum - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 前缀和(pr ...
- 2021.08.09 P6037 Ryoku的探索(基环树)
2021.08.09 P6037 Ryoku的探索(基环树) P6037 Ryoku 的探索 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.树的性质 2.基环树的性质 ...
- 2021.08.09 P6225 抑或橙子(树状数组)
2021.08.09 P6225 抑或橙子(树状数组) 重点: 1.异或用法 题意: Janez 喜欢橙子!他制造了一个橙子扫描仪,但是这个扫描仪对于扫描的每个橙子的图像只能输出一个 3232 位整数 ...
- Luogu P5018 对称二叉树 瞎搞树&哈希
我的天..普及组这么$hard$... 然后好像没有人用我的垃圾做法,,,好像是$O(n)$,但十分的慢,并且极其暴力$qwq$ 具体来说,就是直接$dfs$求出树高,然后想像出把原来的树补成满二叉树 ...
- 洛谷P5018 对称二叉树——hash
给一手链接 https://www.luogu.com.cn/problem/P5018 这道题其实就是用hash水过去的,我们维护两个hash 一个是先左子树后右子树的h1 一个是先右子树后左子树的 ...
- P5018 对称二叉树题解
题目内容链接: 那么根据题意,上图不是对称二叉树,只有节点7的子树是: 通俗来说,对称二叉树就是已一个节点x为根的子树有穿过x点的对称轴并且对称轴两边的对称点的大小也必须相等,那么这棵树就是对称二叉树 ...
随机推荐
- UC_OS II学习笔记
是一个可以基于ROM运行的.可裁减的.抢占式.实时.多任务OS内核: 可剥夺型的实时内核在任何时候都运行就绪了的最高优先级的任务. 一个任务,也称作一个线程,是一个简单的程序,该程序可以认为 CPU ...
- 6月6日 python学习总结 jQuery (三)
1. 常用事件 1. hover #鼠标悬停监听 2. keydown和keyup #键盘按键 按下/抬起 3. change #监听值的改变 全部输入完失去焦点后 4. focus和blur # 获 ...
- 常用正则表达式与python中的re模块
正则表达式是一种通用的字符串匹配技术,不会因为编程语言不一样而发生变化. 部分常用正则表达式规则介绍: . 匹配任意的一个字符串,除了\n * 匹配任意字符串0次或者任意次 \w 匹配字母.数字.下划 ...
- phpcms 2008 变量覆盖漏洞
一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 3.点击新建项目按钮,弹出对画框中选择(C:\ ...
- idea使用技巧、心得1
0.安装idea之后的准备 (1) 永久快乐使用:在我的博客搜索安装idea关键词既可 (2) 取消更新: (3) idea 官网的关于idea的使用手册:https://www.jetbrains. ...
- buu 相册 wp
调用c2 主要为nativemethod部分,调用外部函数 解压找到so库 字符串定位函数 getflag
- 99%的人都搞错了的java方法区存储内容,通过可视化工具HSDB和代码示例一次就弄明白了
https://zhuanlan.zhihu.com/p/269134063 番茄番茄我是西瓜 那是我日夜思念深深爱着的人啊~ 已关注 6 人赞同了该文章 前言 本篇是java内存区域管理系列教 ...
- js file对象 文件大小转换可视容易阅读的单位
function returnFileSize(number) { if(number < 1024) { return number + 'bytes'; } else if(number & ...
- Web,RESTful API 在微服务中的作用是什么?
微服务架构基于一个概念,其中所有服务应该能够彼此交互以构建业务功能.因 此,要实现这一点,每个微服务必须具有接口.这使得 Web API 成为微服务的一 个非常重要的推动者.RESTful API 基 ...
- elasticsearch 的倒排索引是什么 ?
面试官:想了解你对基础概念的认知. 解答:通俗解释一下就可以. 传统的我们的检索是通过文章,逐个遍历找到对应关键词的位置. 而倒排索引,是通过分词策略,形成了词和文章的映射关系表,这种词典+映射表 即 ...