结题报告--P5551洛谷--Chino的树学
题目:点此
题目描述
Chino树是一棵具有某种性质的满二叉树,具体来说,对于这棵树的每一个非叶子节点,它的左子节点(A)(A)(A)的右子节点(C)(C)(C)与它的右子节点(B)(B)(B)的左子节点(D)(D)(D)的值相同,且CCC与DDD下方的子树也完全相同。现在,Chino想知道,要如何从根节点走到其中任意叶节点使路上经过的节点的权值之和最大。
思路
先分析一下Chino树(满二叉树)的性质(节点编号)。
k层的满二叉树的最后一个结点的编号是2k-1,第一个叶子结点的编号是2k-1,由此可知,判断节点是否为叶子:if(i>=pow(2,k-1)//i为结点编号 判断此编号是否有对应节点:if(i>=0&&i<=pow(2,k)-1)//i为编号
定义一个变量n_1存储2k-1,再定义一个变量x=n_1*2-1(就是2k-1)。
本题难点之一就是把以深搜序列输入的树变成在数组里存储的树(数组存储是广搜序列),这个问题的解决方法是:在递归建树的函数里加一个参数now_number,表示现在是数组下标几了,因为数组下标是可以计算的:左子树下标:now_number*2,右子树下标:now_number*2+1。再加一个max_node_number,表示最大的结点编号,判断是否有左子树或右子树。
接下来就是判断最大值了。使用先根遍历遍历二叉树,由于这棵树是用数组存储的,所以这篇博客里的in_oder函数的参数可以变为now_number,再加一个now_weight,表示现在的结点权值和。
这个函数里执行:先更新now_weight,把此节点权值加进去。然后判断此节点是否为叶子,若是则判断是否为最大值,若是则更新最大值,结束,不是叶子则按照先根遍历的方法继续遍历。
最后主函数就是这些函数的结合。
(犯的错误和收获全部丢失,无法叙述)
代码:
#include <iostream>
#include <cstdio>
using namespace std;
int tree[];
int read()
{
int s=,w=;
char ch=getchar();
while(ch<''||ch>'')
{
if(ch=='-')
w=-;
ch=getchar();
}
while(ch>=''&&ch<='')
s=s*+ch-'',ch=getchar();
return s*w;
} void maketree(int now_number,int max_node_number){
int now_node;
now_node=read();
tree[now_number]=now_node;
if(now_number*>max_node_number){
return ;
}
maketree(now_number*,max_node_number);
maketree(now_number*+,max_node_number);
}
int pow(int r){
if(r==){
return ;
}
int data=;
if(r%==){
data=;
}
int index=pow(r/);
return index*index*data;
}
int maxx,n_1;
void pre_oder(int now_weight,int now_number){
now_weight+=tree[now_number];
if(now_number>=n_1){
if(now_weight>maxx){
maxx=now_weight;
}
return ;
}
pre_oder(now_weight,now_number*);
pre_oder(now_weight,now_number*+);
}
int main(){
int n;
n=read();
n_1=pow(n-);
int x=n_1*-;
maketree(,x);
pre_oder(,);
cout << maxx;
return ;
}
代码
结题报告--P5551洛谷--Chino的树学的更多相关文章
- 【解题报告】洛谷 P2571 [SCOI2010]传送带
[解题报告]洛谷 P2571 [SCOI2010]传送带今天无聊,很久没有做过题目了,但是又不想做什么太难的题目,所以就用洛谷随机跳题,跳到了一道题目,感觉好像不是太难. [CSDN链接](https ...
- 【阶梯报告】洛谷P3391【模板】文艺平衡树 splay
[阶梯报告]洛谷P3391[模板]文艺平衡树 splay 题目链接在这里[链接](https://www.luogu.org/problemnew/show/P3391)最近在学习splay,终于做对 ...
- 【解题报告】 洛谷 P3492 [POI2009]TAB-Arrays
[解题报告] 洛谷 P3492 [POI2009]TAB-Arrays 这题是我随机跳题的时候跳到的.写完这道题之后,顺便看了一下题解,发现只有一篇题解,所以就在这里顺便写一个解题报告了. 首先当然是 ...
- 《基于Arm实验箱的国密算法应用》课程设计 结题报告
<基于Arm实验箱的国密算法应用>课程设计 结题报告 小组成员姓名:20155206赵飞 20155220吴思其 20155234昝昕明 指导教师:娄嘉鹏 设计方案 题目要求:基于Arm实 ...
- 《基于Cortex-M4的ucOS-III的应用》课程设计 结题报告
<基于Cortex-M4的ucOS-III的应用>课程设计 结题报告 小组成员姓名:20155211 解雪莹 20155217 杨笛 20155227 辜彦霖 指导教师:娄嘉鹏 一.设计方 ...
- 洛谷1087 FBI树 解题报告
洛谷1087 FBI树 本题地址:http://www.luogu.org/problem/show?pid=1087 题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全 ...
- 【解题报告】洛谷 P1231 教辅的组成
[解题报告]洛谷 P1231 教辅的组成 题目链接 CSDN链接 这道题就只是一道普通的最大流问题,但是关键所在就是如何构图.要不是我看了题解,真的想不到这个构图方法呢 题目大意我就不写了,自己看好了 ...
- 洛谷P3018 [USACO11MAR]树装饰Tree Decoration
洛谷P3018 [USACO11MAR]树装饰Tree Decoration树形DP 因为要求最小,我们就贪心地用每个子树中的最小cost来支付就行了 #include <bits/stdc++ ...
- 2016noipday1t1玩具迷题结题报告
经常读这个代码有益于比赛时想起一些思路.... day1t1,洛谷dalao称之为水题...??然后我去年还是没拿到分,就这个,我还就写了40%的数据,AC到40,然而这不是关键,注释了freopen ...
随机推荐
- LeetCode No.73,74,75
No.73 SetZeroes 矩阵置零 题目 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 输入: [ [1,1,1], [ ...
- OpenCV 使用二维特征点(Features2D)和单映射(Homography)寻找已知物体
#include <stdio.h> #include <iostream> #include "opencv2/core/core.hpp" #inclu ...
- Android下的鉴权实现方案
软件原理 不赘述,参考: 软件License认证方案的设计思路 License文件离线鉴权 机械指纹,不可逆的加密算法,如MD5 功能鉴权,可逆的不对称加密算法,服务端公钥加密,app端私钥解密,如R ...
- java和javac命令
记录一下,今天无意中用到单独编译和执行某个java类,遇到各种Error: Could not find or load main class等问题,解决方案如下其中2和3选其一试试~ 1.javac ...
- generate的使用verilog
根据项目设计的需要,要实例化多个类似的模块,这些类似的模块包括方波波形发生器,这几个模块基本相同,除了参数传递值不同,其他他部分都是相同的 具体实现代码如下: 此外有计数模块的例化,这个模块例化多个的 ...
- SpringMVC中Interceptor和Filter区别
Interceptor 主要作用:拦截用户请求,进行处理,比如判断用户登录情况,权限验证,主要针对Action请求进行处理.是通过HandlerInterceptor 实现的. 配置如下: <m ...
- t-检验
https://wenku.baidu.com/view/3954f9d9a58da0116c17497b.html介绍的挺好的,可以查看~ 应用方面:用于推断差异发生的概率,与f检验,卡方检验并列 ...
- unittest(22)- p2p项目实战(2)-http_request
# 2. http_request.py import requests from learn_logging_5.write_log_class import MyLog my_logger = M ...
- MyBatis like (模糊查询)
select * from user where user_name like concat('%',#{userName},'%'); select * from user where user_n ...
- H5本地离线存储
前言上一篇文件结尾,有同学问我本地存储图片方法,其实本地存储方式有很多,我们打开谷歌浏览器,查看源代码,在resources页签中,有web SQl ,indexedDB等等,我前面文章讲过Local ...