题目描述
完全二叉树的权值 - 蓝桥云课 (lanqiao.cn)
题目分析
我们以每一个节点的坐标来将这一深度的权值之和相加从而算出权值和
要清楚每一个深度的其实节点和末尾节点,使用双指针将这个深度节点的权值和计算出来,记录所
需要的深度即可
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5 + 10;
int maxx = -2e5 + 10;
int a[N];
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i ++)cin >> a[i];
int depth = 0;
for(int i = 1, d = 1; i <= n; i *= 2, d ++)
{
ll sum = 0;
for(int j = i; j <= 2 * i - 1; j ++)
{
sum += a[j];
}
if(sum > maxx)
{
maxx = sum;
depth = d;
}
}
cout << depth << '\n';
return 0;
}