蓝桥杯-完全二叉树的权值-python解法

简介: 蓝桥杯-完全二叉树的权值-python解法

题目描述


给定一棵包含 NN 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下、从左到右的顺序依次是 A_1, A_2, ··· A_NA1,A2,⋅⋅⋅AN,如下图所示:

现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点 权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。

注:根的深度是 1。


输入描述


第一行包含一个整数 N(1 \leq N \leq 10^5)N(1≤N≤105)。

第二行包含 N 个整数 A_1, A_2, ··· A_N (−10^5 \leq A_i \leq 10^5)A1,A2,⋅⋅⋅AN(−105≤Ai≤105)。


输出描述


输出一个整数代表答案。


输入输出样例


示例

输入

1. 7
2. 1 6 5 4 3 2 1

输出

2

运行限制


  • 最大运行时间:1s
  • 最大运行内存: 256M

思路:

题目要求权值最大的节点深度,如果有多个深度的权值和同为最大,输出其中最小的深度。由此可以分成两步,1.求每个深度的权值;2.找到权值最大的节点深度并输出

首先来看第一步,题目给了我们一个串数字,并要求这串数字构成完全二叉树,通过观察,我们发现第1个数在第一层,第2,3个数在第二层,第4,5,6,7个数在第三层,,,,,,以此类推,我们只要找到不同层行的间断点,再将两个间断点之前的所有值相加,就得到了这一层得权值。由上图,观察其A的下标,不难发现层的区间为:2的n次方——2的n+1次方(n=1,2,3.......),确定了区间,我们把区间内的数相加即可

第二步,得到每一层的权值后,我们要做的就是找到权值最大的点,输出其深度


1. p = []
2. #找到间断点1,2,4,8,16,,,,,
3. for i in range(0, 33):  
4.     p.append(2 ** i)    
5. 
6. n = int(input())
7. a = input().split(" ")
8. 
9. ans = [0] * 32  #记录每层的和
10. 
11. #遍历所有输入的数
12. for i in range(0, n):
13.     #更新每一层的和
14. for j in range(0, len(p)):
15.          #在区间内的数相加求和
16. if i + 1 >= p[j] and i + 1 < p[j + 1]:
17.             ans[j] += int(a[i])
18. 
19. #找到最大值,输出深度
20. mx, u = -1, -1
21. for i in range(0, len(ans)):
22. if mx < ans[i]:
23.         mx, u = ans[i], i
24. print(u + 1)
目录
相关文章
|
20天前
|
Python
蓝桥杯练习题(一):Python组之入门训练题
这篇文章是关于蓝桥杯Python组的入门训练题,包括Fibonacci数列、圆的面积、序列求和和A+B问题的具体代码实现和样例输出。
85 0
|
20天前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
36 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
20天前
|
人工智能 Python
蓝桥杯练习题(四):Python组之历届试题三十题
关于蓝桥杯Python组历届试题的三十个练习题的总结,包括题目描述、输入输出格式、样例输入输出以及部分题目的解题思路和代码实现。
15 0
蓝桥杯练习题(四):Python组之历届试题三十题
|
20天前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(二):Python组之基础练习三十题
蓝桥杯Python编程练习题的集合,包含了三十个不同难度的编程题目,覆盖了基础语法、数据结构和算法等领域。
16 0
|
5月前
|
存储 机器学习/深度学习 算法
皇后之战:揭秘N皇后问题的多维解法与智慧【python 力扣52题】
皇后之战:揭秘N皇后问题的多维解法与智慧【python 力扣52题】
|
5月前
|
存储 算法 数据挖掘
高效搜索技巧:最小覆盖子串解法【力扣75题 python】
高效搜索技巧:最小覆盖子串解法【力扣75题 python】
|
5月前
|
SQL 算法 数据挖掘
探索有效括号 力扣第20题:从栈到递归的多角度解法 【含图解 python】
探索有效括号 力扣第20题:从栈到递归的多角度解法 【含图解 python】
|
6月前
|
索引 Python 容器
【备战蓝桥杯】探索Python内置标准库collections的使用
【备战蓝桥杯】探索Python内置标准库collections的使用
82 1
|
6月前
|
存储 人工智能 定位技术
千帆杯第一期赛题:游乐场排队规划助手(香港迪士尼python解法)
千帆杯第一期赛题:游乐场排队规划助手(香港迪士尼python解法)
181 0
|
6月前
|
Java C++ Python
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-456 求链表各节点的平均值(C++解法)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-456 求链表各节点的平均值(C++解法)
49 0