完全二叉树的权值 - 蓝桥云课 (lanqiao.cn)
题意就是给你n个点,然后按照完全二叉树的结点的编号依次读入权值,问权值最大的且最靠前的深度是多少
贴一位大佬的博客555
(3条消息) 完全二叉树的权值_烫烫烫~的博客-CSDN博客
我觉得上面讲的已经很完美了,手动点赞
然后就是记住一个公式:二叉树的深度是ceil(log2(n+1))//以2为底
然后c++库里面log以e为底,所以用过换底公式就是:int h=ceil(log(i+1)/log(2));
然后就没啥了,每一层加起来就可以了,主要就把深度弄清楚就可以了
#include#include using namespace std; const int N=1e6+10,INF=-0x3f3f3f3f; int sum[N]; int main(){ int n; cin>>n; for(int i=1;i<=n;i++)//从1开始 { int w; cin>>w; int h=ceil(log(i+1)/log(2)); sum[h]+=w; // cout<



