二叉树的性质
//题目:完全二叉树的权值(Acwing) #include<bits/stdc++.h> using namespace std; int const N=1e5+7; int n; int a[N]; int main(){ cin >> n; for(int i=1;i<=n;++i){ cin >> a[i]; a[i]+=a[i-1]; } int sum=-0x3fffffff,ans=0;
//二叉树的性质:
//根的深度为0,下标(编号)为1
//设每层的深度为deep
//每一层有2^deep 个节点
//每一层首个节点的编号为 2^deep ,最后一个节点的编号为 2^(deep+1)-1
//----分割线---- for(int l=1,r=1,i=1;l<=n;++i){ if(r>n) r=n; if(a[r]-a[l-1] > sum){ sum=a[r]-a[l-1]; ans=i; } l= 1 << i; r=(1<<(i+1))-1; } cout << ans; return 0; }