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

试题 历届真题 完全二叉树的权值【第十届】【省赛】【B组】_第1张图片

题解

#include
#include
using namespace std;
int a[100005];
long long maxn=-1e18;
int main()
{
	long long n;
	cin>>n;
	int depth=1;
	int ans=1;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for(int i=1;i<=n;i*=2)
	{
		    long long s=0;
			for(int j=i;j<=2*i-1&&j<=n;j++)
			{
				s+=a[j];
			}
			if(s>maxn)
			{
				maxn=s;
				ans=depth;
			}
			depth++;
	}
	cout<

 主要是用了这个规律:在完全二叉树中,第i层(根为1层)的第一个数为第2^(i-1)个数,最后一     个数为第2^i - 1个数

  主要学习了下面这篇博客

  蓝桥杯--历届真题 完全二叉树的权值【第十届】【省赛】【B组】_with_wine的博客-CSDN博客

 

你可能感兴趣的:(蓝桥杯,蓝桥杯)