试题 历届真题 完全二叉树的权值【第十届】【省赛】【A组】

简介: 试题 历届真题 完全二叉树的权值【第十届】【省赛】【A组】

资源限制


内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s


问题描述


 给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从

 上到下、从左到右的顺序依次是 A1, A2, · · · AN,如下图所示:


ec75bd5e6abe467b86cbfecc64f8d278.png



现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点

 权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。

 注:根的深度是 1。


输入格式


 第一行包含一个整数 N。

 第二行包含 N 个整数 A1,

 A2, · · · AN 。


输出格式


 输出一个整数代表答案。


样例输入


7

1 6 5 4 3 2 1


样例输出


2


评测用例规模与约定


 对于所有评测用例,1 ≤ N

 ≤ 100000,−100000 ≤ Ai ≤ 100000。

#include <iostream>
using namespace std;
const int N = 1000000;
static int A[N];
static int sum[N] = { 0 };
static int Tree[1000][100000] = { 0 };
int main() {
  long long n;
  int t = 0;
  long long k = 1;
  int i;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> A[i];
  }
  for (i = 0; t < n ; i++) {
    for (int j = 0; j < k; j++) {
      Tree[i][j] = A[t++];
    }
    k *= 2;//更新层数
  }
  k = 1;
  int maxi = 0, mini = 0;
  for (int l = 0; l < i; l++) {
    for (int j = 0; j < k; j++) {
      sum[l] += Tree[l][j];
    }
    if (sum[maxi] < sum[l]) {
      maxi = l;
    }
    if (sum[mini] > sum[l]) {
      mini = l;
    }
    k *= 2;
  }
  int num = 0;
  for (int l = 0; l < i; l++) {
    if (sum[l] == sum[maxi]) {
      num++;
    }
  }
  if (num < 2) {
    cout << maxi + 1;
  }
  else cout << mini + 1;
  return 0;
}

88f436f755e3440eabe17d319a9f47b5.png









相关文章
|
1月前
|
测试技术 定位技术 C++
第十四届省赛大学B组(C/C++)岛屿个数
第十四届省赛大学B组(C/C++)岛屿个数
|
1月前
|
人工智能 C++
第十四届省赛大学B组(C/C++)接龙数列
第十四届省赛大学B组(C/C++)接龙数列
|
5月前
|
C++
【洛谷 P1047】[NOIP2005 普及组] 校门外的树 题解(位集合)
**NOIP2005普及组问题:**给定长度为$l$的马路,上面等距种植着树,需移除位于建造地铁区域的树。输入包含马路长度和区域数,以及各区域起止点,输出移树后剩余树的数量。样例输入:$l=500$, $m=3$,输出:$298$。$20\%$数据无区域重合,$1 \leq l \leq 10^4$,$1 \leq m \leq 100$。解决方案利用位集合(bitset)表示树的状态,遍历区域将树设为0,最后统计1的数量。AC代码使用C++实现。
30 0
砍竹子(蓝桥杯 2022 省赛 B 组 J 题)
砍竹子(蓝桥杯 2022 省赛 B 组 J 题)
85 0
2022第十三届届蓝桥杯c++B组题解
2022第十三届届蓝桥杯c++B组题解
88 1
|
算法 测试技术 C++
第十一届蓝桥杯第三场软件类省赛 C++ B组 题解(二)
第十一届蓝桥杯第三场软件类省赛 C++ B组 题解
155 0
|
算法 测试技术 C++
第十一届蓝桥杯第三场软件类省赛 C++ B组 题解(一)
第十一届蓝桥杯第三场软件类省赛 C++ B组 题解
102 0
|
算法 C++ Windows
省赛将至,咱们看看第十一届蓝桥杯省赛C/C++ B组试题都出了些什么了?知己知彼,百战不殆
省赛将至,咱们看看第十一届蓝桥杯省赛C/C++ B组试题都出了些什么了?知己知彼,百战不殆
166 0
省赛将至,咱们看看第十一届蓝桥杯省赛C/C++ B组试题都出了些什么了?知己知彼,百战不殆
下一篇
无影云桌面