nihao 题解分享 · 2024/4/6
完全二叉树的权值(编程题) - 题解
被气晕了, 忘记特殊情况交了12次才通过 ``` import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.PrintWriter; import java.util.Scanner; public class Main { static int n; static int a[]; public static void main(String[] args) { Scanner scanner = new Scanner(new BufferedInputStream(System.in)); PrintWriter writer = new PrintWriter(new BufferedOutputStream(System.out)); n = scanner.nextInt(); a = new int[n]; for (int i = 0; i < n; i++) { a[i] = scanner.nextInt(); } double end = Math.log(n + 1) / Math.log(2); int res = 1; long maxCount = 0x3f3f3f; maxCount = -maxCount; int index = 0; for (int dep = 1; dep <= end; dep++) { long sum = 0; for (int i = 1; i <= Math.pow(2, dep - 1); i++) { sum += a[index++]; } if (sum > maxCount) { res = dep; maxCount = sum; } } //特别情况,剩余的节点单独记录 long sum = 0; while (index < n) { sum += a[index++]; } if (sum > maxCount) { res = (int)end+1; maxCount = sum; } System.out.println(res); writer.flush(); scanner.close(); } } ```
查看全文
0 0 0 2
LXNGC2237 题解分享 · 2024/4/11
完全二叉树的权值(编程题) - 题解
简单的模拟 ``` #include<bits/stdc++.h> using namespace std; int n; int a[100005]; long long cs,cnt,tol,ans=-100005,ansc,css,unt; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } cs=1;css=1; for(int i=1;i<=n;i++) { if(cnt==cs) { if(tol>ans) { ans=tol; ansc=css; } cs<<=1; css++; cnt=0; tol=0; } cnt++; tol+=a[i]; } if(tol>ans) { ans=tol; ansc=css; } cout<<ansc; } ```
查看全文
0 0 0 1