【蓝桥杯】历届真题 完全二叉树的权值(省赛)Java

news2024/11/18 13:56:46

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

        给定一棵包含N个节点的完全二叉树,树上每个节点都有一个权值,按从上到下、从左到右的顺序依次是A1,A2,... Aw,如下图所示:

        现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。

        注:根的深度是1。

输入格式

        第一行包含一个整数N。

        第二行包含N个整数A1,A2,.…· AN 。

 【输出格式

        输出一个整数代表答案。

样例输入

7

1 6 5 4 3 2 1

样例输出

2

评测用例规模与约定

        对于所有评测用例,1≤N ≤ 100000,-100000 ≤ Ai ≤ 100000。

思路与分析

        1.将题中所给的信息元素录入数组。

        2.确定录入的元素需要多少个数组分别进行添加,(这里用到了高中的等比数列的和公式)

        a1*(q^n-1)/(q-1)

        3.对元素进行分割,利用ArrayList进行相应的成组元素的获取,(ArrayList不会受到数组元素长度的限制)

        4.将成组的元素放进list中的同时,对list中的元素进行相加,并存入到新的数组 sum 中去。

        5.获取到相应的成组的元素相加的和后,再进行相应大小的比较,确定最大的元素同时也确定了最终的结果,进行+1操作后即为答案。

代码

import java.util.ArrayList;
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        int num = 0;
 
        for (int i = 0; i < 18; i++) {
            if (Math.pow(2, i) - 1 >= n) {
                num = i;
                break;
            }
        }
        int k = 0;
        int[] sum = new int[num];
        ArrayList<Integer> list = new ArrayList<>();
        for (int i=0; i<num; i++) {
            list.clear();
 
            if (i < num - 1) {
                for (int j = 0; j < Math.pow(2, i); j++) {
                    list.add(arr[k]);
                    k++;
                }
                for (int l = 0; l < list.size(); l++) {
                    sum[i] += list.get(l);
                }
            } else {
                for (int j = 0; j < n - (Math.pow(2, i) - 1); j++) {
                    list.add(arr[k]);
                    k++;
                }
                for (int m = 0; m < list.size(); m++) {
                    sum[i] += list.get(m);
                }
            }
 
        }
        int max = sum[0];
        int r = 0;
        for (int i = 1; i < sum.length; i++) {
            if (max < sum[i]) {
                max = sum[i];
                r = i;
            }
 
        }
        System.out.println(r +1);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot将项目打包成JAR包或者WAR包

SpringBoot将项目打包成JAR包或者WAR包前言打包成JAR包打包成WAR包打包遇到的问题Maven环境问题跳过测试并打包前言 本文开发工具使用IDEA&#xff0c;已配置好Maven环境&#xff0c;如果未配置的可以参考另外一篇文章: Maven如何配置阿里镜像及安装全步骤 打包成JAR包 默认…

【C++】继承——切片、隐藏、默认成员函数、菱形

文章目录一、继承概念及定义二、赋值转换——切片三、继承的作用域——隐藏四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、菱形继承及菱形虚拟继承八、继承与组合九、结语一、继承概念及定义 概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最…

刚毕业小白软考中级什么专业合适?

如果只是想考取软考中级证书&#xff0c;可以考虑比较热门的考试项目&#xff0c;当然具体还是要看和自己的职业发展和需求是否匹配为前提&#xff0c;这样对于自己今后的职业生涯规划也有一定帮助。中级科目介绍&#xff1a;软考中级备考攻略&#xff1a;反正只要认真备考&…

使用PyTorch构建卷积GAN源码(详细步骤讲解+注释版) 02人脸图片生成 上

阅读提示&#xff1a;本篇文章的代码为在普通GAN代码上实现人脸图片生成的修改&#xff0c;文章内容仅包含修改内容&#xff0c;全部代码讲解需结合下面的文章阅读。 相关资料链接为&#xff1a;使用PyTorch构建GAN生成对抗 本次训练代码使用了本地GPU计算。 1 CelebADataset类…

2023.1.23-1.29 AI行业周刊(第134期):春节回家乡的感受

春节的假期&#xff0c;时间过得很快。 年前回家在路上的时候&#xff0c;就考虑到过年时间短暂&#xff0c;但是当大年初六和家乡别离&#xff0c;和大姐二姐们再见的时候&#xff0c;心中还是充满了不舍。 2022年初回家过年的画面还印在脑海中&#xff0c;和家乡相聚的频率…

【自然语言处理】文本分析:非结构化信息分析科学与应用导论(主题建模)

文本分析&#xff1a;非结构化信息分析科学与应用导论&#xff08;主题建模&#xff09;1.介绍 文本聚类可以将数据&#xff08;这里即指文本&#xff09;按照一定规则划分为不同的群组&#xff0c;理想情况下可以从聚类结果中发现一些有趣的模式。不同聚类方法的一致性意义和…

QT 使用线程完成串口数据的读写,并把数据传递给主线程

1、之前做串口通信的时候直接在主线程 用了api实现&#xff0c;这种只做个串口助手是OK的&#xff0c;但是在大型项目中这样做会占用主线程的时间&#xff0c;数据量大的时候不确定有多卡顿。 2、看了网上很多资料&#xff0c;没一个写的是对的&#xff0c;主要错在 QSerialPo…

Linux-用户及文件权限管理

目录1、Linux 用户管理1.1 查看用户1.2 创建用户1.3 用户组1.4 删除用户和用户组2、Linux文件权限2.1 查看文件权限2.2 变更文件所有者2.3 修改文件权限3、补充1、Linux 用户管理 Linux可以实现多用户登录&#xff0c;A和B用户可以同时登录同一台主机&#xff0c;虽然他们的文…

IT帮助台如何帮助企业进行人力资源管理

在大多数组织中&#xff0c;HR 服务管理流程从内部聊天或电话开始&#xff0c;以 Word 文档和 Excel 工作表结束。以这种老式的方式管理所有这些信息变得非常乏味&#xff0c;因为 组织成长。大多数组织&#xff0c;即使有人力资源管理系统&#xff0c;也使用过时的系统&#x…

2-3-内存泄漏和内存溢出

1、内存泄漏和内存溢出区别 内存泄漏&#xff1a;是指程序在申请内存后&#xff0c;无法释放已申请的内存空间&#xff0c;一次内存泄漏似乎不会有大的影响&#xff0c;但内存泄漏堆积后的后果就是内存溢出。 内存泄漏是指你向系统申请分配内存进行使用(new)&#xff0c;可是…

vue指令

文章目录1.vue基础1.el挂载点2.data数据对象2.vue指令1.v-text2.v-html3.v-on4.v-show5.v-if6.v-bind7.v-for8.v-model1.vue基础 1.el挂载点 在el命中的内部可以无限嵌套el绑定的元素&#xff0c;可以支持id选择器&#xff0c;class选择器&#xff0c;标签选择器。并且双标签…

element - - - - - Form表单的resetFields()方法没有生效?

万事如伊 大吉大利 Form表单的resetFields方法没有生效?1. 场景描述2. 问题分析3. 解决办法关于element组件&#xff0c;相信各位同学都不陌生。其各个组件不可谓不好用&#xff0c;能够快速的帮助开发人员进行排版布局&实现效果。 但是总会遇到一些不可避免的坑。 1. 场…

win10中pycharm使用django问题总结

1.问题一出现问题&#xff1a;ERROR: Could not find a version that satisfies the requirement XXX解决方法直接选用pip源并且信任它的来源就可以解决这种问题。pip install django版本号 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 这里将pip源换成…

公司招了个在腾讯拿35K的人,让我见识到什么才叫测试天花板···

一进公司&#xff0c;看见门外有几个带着行李在外面等待的人&#xff0c;应该就是来入职的&#xff0c;果不其然&#xff0c;在进公司后&#xff0c;召开了新人见面会&#xff0c;让他们做了自我介绍和职业规划以及部门&#xff0c;令我印象最深刻的就是一个刚刚从腾讯离职出来…

【C++修炼之路】类和对象(上)—— 入门篇

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;C修炼之路 文章目录一、前言二、初识面向过程和面向对象三、类的引入和定义四、类的访问限定符及封装1、访问限定符2、封装五、类的作用域六、类的实…

Day03-无处不在的数据

文章目录Day03-无处不在的数据无处不在的数据分析案例1&#xff1a;论文选题案例2&#xff1a;产品面试案例3&#xff1a;工作汇报用户的依赖性案例4&#xff1a;选票逻辑几乎所有岗位都需要数据分析Day03-无处不在的数据 昨天&#xff0c;我们为你打开了数据分析的大门&#…

vue生命周期钩子函数

1 vue的生命周期的钩子函数有哪些 beforeCreate &#xff1a;在调用beforeCreate时&#xff0c;已完成的内容是创建了一个空的Vue实例对象&#xff0c;这个对象上有默认的生命周期函数和默认的事件created &#xff1a;此阶段时&#xff0c;数据配置结束。包括数据侦听、计算属…

((蓝桥杯 刷题全集)【备战(蓝桥杯)算法竞赛-第2天】( 从头开始重新做题,记录备战竞赛路上的每一道题 )距离蓝桥杯还有74天

&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6; 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&a…

【JavaScript速成之路】JavaScript变量

&#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f525;系列专栏&#xff1a;【JavaScript速成之路】 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 文章目录前言1&#xff0c;JavaScript变量1.1&#xff0c;变量的含义1.2&#xff0c;变量…

C语言指针变量的定义和使用

数据在内存中的地址也称为指针&#xff0c;如果一个变量存储了一份数据的指针&#xff0c;我们就称它为指针变量。在C语言中&#xff0c;允许用一个变量来存放指针&#xff0c;这种变量称为指针变量。指针变量的值就是某份数据的地址&#xff0c;这样的一份数据可以是数组、字符…