题解
2025-10-03 10:27:59
发布于:广东
1阅读
0回复
0点赞
直接计算每一层的最大值,深度为的节点权值之和为
可用位运算优化
#include<bits/stdc++.h>
using namespace std;
int n,a[200005],mx=-1,id=-1;
int main()
{
cin >> n;
for (int i=1;i<=n;i++)
cin >> a[i];
for (int i=0;(1<<i)<=n;i++)
{
int sum=0;
for (int j=(1<<i);j<=(1<<(i+1))-1;j++)
sum+=a[j];
if (sum>mx)
mx=max(mx,sum),id=i+1;
}
cout << id;
return 0;
}
这里空空如也
有帮助,赞一个