試題 g: 完全二叉樹的權值
時間限制: 1.0s 記憶體限制: 256.0mb 本題總分:20 分
【問題描述】
給定一棵包含 n 個節點的完全二叉樹,樹上每個節點都有乙個權值,按從
上到下、從左到右的順序依次是 a 1 , a 2 , ··· a n ,如下圖所示:
現在小明要把相同深度的節點的權值加在一起,他想知道哪個深度的節點
權值之和最大?如果有多個深度的權值和同為最大,請你輸出其中最小的深度。
注:根的深度是 1。
【輸入格式】
第一行包含乙個整數 n。
第二行包含 n 個整數 a 1 , a 2 , ··· a n 。
【輸出格式】
輸出乙個整數代表答案。
【樣例輸入】
71 6 5 4 3 2 1
【樣例輸出】
2【評測用例規模與約定】
對於所有評測用例,1 ≤ n ≤ 100000,−100000 ≤ a i ≤ 100000。
分析
①因為題目說了是一顆完全二叉樹,所以用順序儲存即可,注意下標要從1開始;
②兩層迴圈算出每層結點的權值,記錄下最大的即可;
1 #include2using
namespace
std;
3const
int maxn=1000;4
intmain();//
a用來順序儲存樹的權值,c用來存放樹的深度所對應的權值
6int n;//
k是深度
7 scanf("
%d",&n);
8for(int i=1;i<=n;i++)
11 c[1]=a[1];//
第一層單獨處理
12int k=2;13
int ans=1;14
for(int i=2;i<=n;i=i+pow(2,k-2
))18
if(c[k]>c[k-1]) ans=k;
19 k++;20}
21 cout<4]<
22 printf("%d"
,ans);
23 }
2019第十屆藍橋杯C C
這是我第一次參加藍橋杯比賽,比完後,有點低於預期,自己的發揮低於預期,賽事水準也低於預期。教室裡面很多同學的電腦出現問題,舉辦學校也沒有完善的應急方案,有一部分同學11點鐘才可以做題。提取碼 560f1.給20個球員擔任五個不同位置的得分,要你選五個球員組成一支球隊的最大得分。這道題要是全排列做的話...
2019第十屆藍橋杯 I 胖子迷宮
題目意思 給你乙個n m的迷宮,能走,障礙物,乙個胖子一開始在3,3,體積為5 5 不過胖子走迷宮的目的是為了 給你乙個時間k,當到達時間k時,胖子餓瘦了變成3 3,當到達時間2 k時,更瘦了變成1 1 題目要求到達 n 2,m 2 這個點所需的最短時間。n,m 300,解決思路,參考hdu1026...
藍橋杯 2023年第十屆真題 完全二叉樹的權值
給定一棵包含 n 個節點的完全二叉樹,樹上每個節點都有乙個權值,按從 上到下 從左到右的順序依次是 a1,a2,an,如下圖所示 現在小明要把相同深度的節點的權值加在一起,他想知道哪個深度的節點 權值之和最大?如果有多個深度的權值和同為最大,請你輸出其中最小的深度。注 根的深度是 1。第一行包含乙個...