《洛谷深入浅出基础篇》P4715淘汰赛——二叉树

上链接:【深基16.例1】淘汰赛 - 洛谷icon-default.png?t=N7T8https://www.luogu.com.cn/problem/P4715

上题干:

题目描述

有 2^n(n≤7)个国家参加世界杯决赛圈且进入淘汰赛环节。已经知道各个国家的能力值,且都不相等。能力值高的国家和能力值低的国家踢比赛时高者获胜。1 号国家和 2 号国家踢一场比赛,胜者晋级。3 号国家和 4 号国家也踢一场,胜者晋级……晋级后的国家用相同的方法继续完成赛程,直到决出冠军。给出各个国家的能力值,请问亚军是哪个国家?

输入格式

第一行一个整数 n,表示一共 2^n 个国家参赛。

第二行 2^n 个整数,第 i 个整数表示编号为 i 的国家的能力值(1≤i≤2^n)。

数据保证不存在平局。

输出格式

仅一个整数,表示亚军国家的编号。

输入输出样例

输入 #1复制

3
4 2 3 1 10 5 9 7

输出 #1复制

1

写这道题,我们可以先将题目给的样例画出来。大概是这样的:

我们可以发现,从最顶部的冠军开始(二叉树的根结点),它的在下一层有两个国家(分支),而且每个国家的下面又有两个国家。直到达到最底部(叶节点)没有分支了。

每个结点的左右两边叫做左子树,右子树。每个左子树,右子树又是一个二叉树,这样的结构就是满二叉树。

我们可以画出:这道题的满二叉树的图像

根据这两张图,我们就可以写出这道题。

首先,我们把所有的数值,放进二叉树的叶结点,也就是最下面一层。

定义一个战斗力数组 able[N],N的取值取决于数据范围。

然后存入每个国家的战斗力,由我们的第一张图可知,8的位置是国家1,9的位置是国家2,以此类推。和每个国家的编号。

然后存入之后,开始dfs:

直到遍历到从树的底部的上一层,该结点的左右子树。如图:

if(该数的左结点战斗力>右结点) 该数的战斗力就是 左结点战斗力,该数的编号,就是左节点的编号。

以此类推,直到遍历 所有结点。

最后在比较结点2,结点3的战斗力,就可以得到亚军的编号。

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<cctype>
#include<map>
#include<set>
#include<queue>
using namespace std;
const int N =1e5;
int able[N];
int win[N];
int n;
void dfs(int x)
{if (x >= 1 << n)return;else {dfs(2 * x);dfs(2 * x + 1);int left = 2 * x, right = 2 * x + 1;if (able[left] > able[right]) {able[x] = able[left];win[x] = win[left];}else {able[x] = able[right];win[x] =win[ right];}}
}
int main()
{cin >> n;for (int i = 0; i < 1 << n; i++){cin >> able[i + (1 << n)];win[i + (1 << n)] = i + 1;}dfs(1);able[2] < able[3] ? cout << win[2] : cout << win[3];
}

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

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

相关文章

力扣刷题,两数之和

1、两数之和 1、问题描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那两个整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。…

从裸机启动开始运行一个C++程序(十三)

前序文章请看&#xff1a; 从裸机启动开始运行一个C程序&#xff08;十二&#xff09; 从裸机启动开始运行一个C程序&#xff08;十一&#xff09; 从裸机启动开始运行一个C程序&#xff08;十&#xff09; 从裸机启动开始运行一个C程序&#xff08;九&#xff09; 从裸机启动开…

uniapp打包的ipa上架到appstore的傻瓜式教程

​ 转载&#xff1a;uniapp打包的ipa上架到appstore的傻瓜式教程 uniapp打包 在HBuilder X编辑器中打开需要打包的项目&#xff0c;然后点击上面菜单栏中 发行 > 原生App-云打包&#xff0c;对以下弹出的弹窗进行内容填写 ​ 填写完成以后&#xff0c;点击打包操作 ​ ​ …

自定义责任链Filter实现

核心接口 Filter package com.xxx.arch.mw.nbp.common.extension;import com.xxx.commons.data.domain.Result;/*** date 2023/08/25*/ public interface Filter {Result invoke(final Invoker invoker, final Invocation invocation); } Invoker package com.xxx.arch.mw.…

修改mysql的密码(每一步都图文解释哦)

当你想要连接本机数据库时&#xff0c;是不是有可能突然忘记了自己的数据库密码? 在此文中&#xff0c;我们来详细解决一下如何去修改自己的数据库密码&#xff0c;并使用Navicat来连接测试 1.停止mysql服务 打开终端&#xff0c;键入命令,将mysql服务先停止掉&#xff0c;…

设置滚动条样式

滚动条样式&#xff1a; 下面是代码&#xff1a; <!doctype html> <html lang"en"><head><meta charset"UTF-8"><title>CSS3自定义滚动条</title><style>header {font-family: Lobster, cursive;text-align: c…

亚马逊云科技向量数据库助力生成式AI成功落地实践探秘(二)

向量数据库选择哪种近似搜索算法&#xff0c;选择合适的集群规模以及集群设置调优对于知识库的读写性能也十分关键&#xff0c;主要需要考虑以下几个方面&#xff1a; 向量数据库算法选择 在 OpenSearch 里&#xff0c;提供了两种 k-NN 的算法&#xff1a;HNSW (Hierarchical…

基于STM32设计的智能防盗单车锁(马蹄锁)设计_升级版

1. 前言 随着共享单车和自行车的普及,人们对自行车的安全和便利性提出了更高的要求。智能防盗马蹄锁是一种基于 STM32 单片机的智能锁,可以通过手机蓝牙实现开锁和关锁控制,同时具备 GPRS 防盗预警功能,提高了自行车的安全性和使用便利性。 通过智能防盗马蹄锁,用户可以…

YOLOv5和改进后模型的result.csv文件对比

import pandas as pd import matplotlib.pyplot as plt# 读取CSV文件 df1 pd.read_csv(rE:\xianyu\yolo.csv) df2 pd.read_csv(rE:\xianyu\final.csv)# 获取列名 columns df1.columns# 循环绘制每一列的对比图 for column in columns:plt.figure(figsize(8, 5))plt.plot(df1…

技术分享 | 在 IDE 插件开发中接入 JCEF 框架

项目背景 当前的开发环境存在多种不同语言的 IDE&#xff0c;如 JetBrains 全家桶、Eclipse、Android Studio 和 VS Code 等等。由于每个 IDE 各有其特定的语言和平台要求&#xff0c;因此开发 IDE 插件时&#xff0c;需要投入大量资源才能尽可能覆盖大部分工具。同时&#xf…

数据结构算法-贪心算法

引言 贪心&#xff1a;人只要有 “需求“ &#xff0c;都会有有点“贪“&#xff0c; 这种“贪“是一种选择&#xff0c;或者“”取舍“ RTS&#xff08;即时战略&#xff09;游戏&#xff1a; 帝国时代里 首先确保拥有足够的人口 足够的粮食&#xff0c;足够的战略资源 足够的…

干货科普 | 不同类型的机器人及其在工作中的应用

原创 | 文 BFT机器人 制造商在其操作中使用各种类型的机器人&#xff0c;每种机器人都具有特定的能力和功能。我们将讨论制造业中使用的一些最常见类型的机器人&#xff0c;以及哪种机器人可能最适合您的应用。 01 关节机器人 关节式机器人是一种工业机器人&#xff0c;具有一…

npm,yarn,pnpm 清理缓存

目录 1&#xff0c;为什么要清理缓存1&#xff0c;缓存文件太多&#xff0c;影响系统运行2&#xff0c;不同源会有区别 2&#xff0c;命令2.1&#xff0c;npm2.2&#xff0c;yarn2.3&#xff0c;pnpm 1&#xff0c;为什么要清理缓存 1&#xff0c;缓存文件太多&#xff0c;影响…

关于easy-es的聚合问题

es实体类&#xff1a; public class ChemicalES {IndexId(type IdType.CUSTOMIZE)private Long id;HighLightIndexField(fieldType FieldType.TEXT, analyzer "ik_max_word")private String name;IndexField(fieldType FieldType.KEYWORD)private List<Stri…

三数之和 Java版

题目描述&#xff1a;给你一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 请你找出所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 输入&#xff1a;nums …

“土味出海”,屡试不爽!短剧出海引来新一轮爆发?

土味和“钱途”并存的短剧不仅在国内迅猛爆发&#xff0c;今年下半年以来海外市场多部爆火短剧出现&#xff0c;“短剧出海”的话题热度不断攀升&#xff0c;丝毫不差2021年网文出海的盛况。 “霸总的爱&#xff0c;日入千万刀”&#xff0c;是真实存在的&#xff01; 据统计…

tp8 使用rabbitMQ(1)简单队列

php8.0 使用 rabbitmq 要使用 3.6版本以上的&#xff0c; 并且还要开启 php.ini中的 socket 扩展 php think make:command SimpleMQProduce //创建一个生产者命令行 php think make:command SimpleMQConsumer //创建一个消费者命令行 代码中的消息持久化的说明 RabbitMQ 消息持…

#Js篇:var、let和 const

var 声明的变量具有函数作用域或者全局作用域&#xff1b;存在变量提升&#xff0c;即在执行上下文中&#xff0c;变量会被提升到函数或全局作用域的顶部&#xff0c;但初始化的赋值不会提升&#xff1b;可以重复声明同一个变量不会报错&#xff1b;可以被重新赋值&#xff1b…

vue3 + Ant Design Vue国际化,组件默认显示中文

官网 写入App.vue <template><ConfigProvider :locale"zhCN"><router-view :key"$route.fullPath"></router-view></ConfigProvider> </template><script setup> import { ConfigProvider } from "ant-de…

某上市证券公司:管控文件交换行为 保护核心数据资产

客户简介 某上市证券公司成立于2001年&#xff0c;经营范围包括&#xff1a;证券经纪、证券投资咨询、证券承销与保荐、证券自营等。经过多年发展&#xff0c;在北京、上海、深圳、重庆、杭州、厦门等国内主要中心城市及甘肃省内各地市设立了15家分公司和80余家证券营业部。20…