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点的对称轴并且对称轴两边的对称点的大小也必须相等,那么这棵树就是对称二叉树 ...
随机推荐
- 关于“TypeError: Assignment to constant variable”的问题解决方案
在项目开发过程中,在使用变量声明时,如果不注意,可能会造成类型错误比如: Uncaught (in promise) TypeError: Assignment to constant variabl ...
- XStream类对象把List<javaBean>()转成json数据
[省市联动] Servlet端: XStream把list转成json数据 //JSONArray-->变成数组/集合[] //JSONObject-->变成简单的数据{name:ayee ...
- innodb和myisam
在Mysql数据库中,常用的引擎主要就是2个:Innodb和MyIASM.这篇文章将主要介绍这两个引擎,以及该如何去选择引擎,最后在提一下这2种引擎所使用的数据结构是什么. 首先介绍一下Innodb引 ...
- SpringBoot打包成可执行的Jar文件
需要时SpringBoot项目 通过创建可以在生产环境中运行的完全独立的可执行jar文件来结束示例.可执行jar(有时称为"胖jar")是包含您的已编译类以及代码需要运行的所有ja ...
- Zookeeper 的 java 客户端都有哪些?
java 客户端:zk 自带的 zkclient 及 Apache 开源的 Curator.
- java后台解决上传图片翻转90的问题,有demo,经过测试可用
1.需要加入 依赖 metadata-extractor.jar 依赖如下 <dependencies> <!-- Extracts Exif, IPTC, XMP, ICC and ...
- ctfhub密码口令
弱口令 进入环境 使用burpsuit抓包爆破 密码长度不一样应该密码就为他 即可找到 默认口令 进入环境一开始不懂百度借鉴原来是要看常见设备默认口令 很快就找到了 一个一个的试 即可获得答案
- hitcon_2017_ssrfme
hitcon_2017_ssrfme 进入环境给出源码 <?php if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $http_x_headers ...
- 浏览器中唤起native app || 跳转到应用商城下载
前段时间遇到一个小需求:要求在分享出来的h5页面中,有一个立即打开的按钮,如果本地安装了我们的app,那么点击就直接唤起本地app,如果没有安装,则跳转到下载. 因为从来没有做过这个需求,因此这注定是 ...
- Mongo实验
MongoDB数据库操作 Student: { "name": "zhangsan", "score": { "English&q ...