2019-F(完全二叉树的权值)

#include <bits/stdc++.h>
using namespace std;
int main(){
    //由于确定是完全二叉树,所以直接按照层进行枚举即可
    long long  n,maxnum = -3500000000ll,maxlayer,cnt =0,flag=0;
    cin>>n;
    for(int layer =0;;layer++){//枚举每一层,从第1层开始进行枚举,层数是layer+1 
        long long sum =0,a;
        for(int i=0;i<(1<<layer);i++)//相当于2的layer次方
        {
        cin>> a;//将读入和运算放在一起,减少时间复杂度
        sum +=a;
        if(++cnt >=n){
            flag = 1;
            break;//所有的元素都读完,则跳出 (最后一层)
        } 
        } 
        if(sum>maxnum)//maxnum一开始取最小值
        {
            maxnum = sum ,maxlayer = layer+1;
        }
        if(flag) break;
    } 
    cout<<maxlayer;
    return 0;
}

 

上一篇:搭建LDD(LINUX设备驱动程序)的学习环境


下一篇:工作分配问题