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

news2024/10/6 22:19:18

上链接:【深基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.coloradmin.cn/o/1246475.html

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

相关文章

掘金产业数字化,百望云荣登2023中国产业数字化新锐势力榜

日前&#xff0c;“第十届中国产业数字化大会”在南京盛大举行&#xff0c;百望云荣登“中国产业数字化新锐势力榜”&#xff0c;市场价值与方案能力再获认可&#xff01; 据悉共有50家企业登上榜单&#xff0c;本次会议作为“中国&#xff08;南京&#xff09;电子商务大会”的…

关于同一接口有多个不同实现的设计方案

关于同一接口有多个不同实现的设计方案 前言 最近公司做了一个银行相关的项目&#xff0c;告诉我公司对接了多个银行的支付&#xff0c;每个银行都有对应的接口要去对接&#xff0c;比如&#xff1a;交易申请&#xff0c;交易取消&#xff0c;支付&#xff0c;回单&#xff0…

JVM-基础

jdk7及以前&#xff1a; 通过-XX:PermSize 来设置永久代初始分配空间&#xff0c;默认值是20.75m -XX:MaxPermSize来设定永久代最大可分配空间&#xff0c;32位是64m&#xff0c;64位是82m jdk8及之后&#xff1a; 通过-XX:MetaspaceSize 来设置永久代初始分配空间&#xff…

鸿蒙系统使用hdc_std.exe使用身份证读卡器等外设USB获得权限方法

hdc_std.exe是OpenHarmony 的命令行工具&#xff0c;由于使用的开源鸿蒙开发板上面没有文件管理器&#xff0c;所以无法通过U盘等方式进行安装.hap应用。 下面是使用hdc_std.exe安装身份证读卡器的步骤&#xff1a; 1、hdc_std.exe放桌面&#xff0c;然后WINR&#xff0c;打开…

微信原生小程序构建表格模板控件

导语 在原生微信小程序开发中&#xff0c;有时候会遇到需要通过表格来呈现一定的数据&#xff0c;尽管在移动端&#xff0c;使用表格来呈现数据&#xff0c;并不是常见的&#xff0c;但是也保不齐会遇到这样的需求&#xff0c;然而在原生微信小程序中&#xff0c;也 并没有提供…

【新手解答】深入探索 C 语言:一些常见概念的解析

C语言的相关问题解答 写在最前面目录 问题1变量名与变量的关系与区别变量和数据类型形参&#xff08;形式参数&#xff09;的概念 问题2解析延伸解析对于多文件程序的理解总结 问题3类和对象变量和数据类型变量是否为抽象的数据类型&#xff1f;总结 问题4解析源文件&#xff0…

20231124给RK3399的挖掘机开发板在Andorid10下加鼠标右键返回

20231124给RK3399的挖掘机开发板在Andorid10下加鼠标右键返回 2023/11/24 12:19 百度&#xff1a;RK3399 Android10 右键返回 https://blog.csdn.net/danhu/article/details/122467256 android9/android10 鼠标右键返回(已验证) danhu 于 2022-01-13 09:46:42 发布 android10 …

【UGUI】实现跑酷游戏分数血量显示在UI中

//1.实现让玩家的金币分数显示在UI文本中 2.让血量和滑动条关联起来 这一节课主要学会获取组件并改变属性&#xff0c;举一反三&#xff01; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro;//1.实现让玩…

TrustAsia亮相Matter开发者大会,荣获Matter优秀赋能者奖

11月22日&#xff0c;由CSA&#xff08;连接标准联盟&#xff09;中国成员组主办&#xff0c;CSHIA承办的“Matter中国区开发者大会2023” 于杭州举行。 会上&#xff0c;连接标准联盟中国成员组主席宿为民博士、连接标准联盟亚洲区架构师杨莉女士、CSHIA秘书长|中智盟投资创始…

【机器学习】算法性能评估常用指标总结

考虑一个二分问题&#xff0c;即将实例分成正类&#xff08;positive&#xff09;或负类&#xff08;negative&#xff09;。对一个二分问题来说&#xff0c;会出现四种情况。如果一个实例是正类并且也被 预测成正类&#xff0c;即为真正类&#xff08;True positive&#xff0…

OpenAI惊天100小时,事件全记录

以下内容为结合这次OpenAI事件经过所做的梳理和总结&#xff0c;里面包含各种八卦和谣言&#xff0c;也是此次事件的狼人杀同人传记&#xff0c;借用了狼人杀游戏中的各种桥段&#xff0c;请各位看官酌情服用。 剧中人物&#xff1a; 好人阵营&#xff08;Sam&Greg&#xf…

【Proteus仿真】【51单片机】篮球比赛计分器

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用声光报警模块、动态数码管模块、按键模块等。 主要功能&#xff1a; 系统运行后&#xff0c;数码管显示比赛时间和AB队得分&#xff1b;系统还未开…

基于SSM的老年公寓信息管理(有报告)。Javaee项目

演示视频&#xff1a; 基于SSM的老年公寓信息管理&#xff08;有报告&#xff09;。Javaee项目 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringMvc …

四数之和java版

题目描述 给定一个包含 n 个整数的数组 nums 和一个目标值 target&#xff0c;判断 nums 中是否存在四个元素 a&#xff0c;b&#xff0c;c 和 d &#xff0c;使得 a b c d 的值与 target 相等&#xff1f;找出所有满足条件且不重复的四元组。 注意&#xff1a;答案中不可以…

杰发科技AC7801——Flash模拟EEP内存分布情况

简介 本文记录了在使用AutoChips芯片Flash模拟EEP过程中的一些理解 核心代码如下 #include <stdlib.h> #include "ac780x_sweeprom.h" #include "ac780x_debugout.h"#define SWEEPROM_SIZE (2048UL) /* Ssoftware eeprom size(Byte) */ #define TE…

制作一个成功的虚拟主持人需要具备哪些要素?

随着多媒体技术的广泛应用&#xff0c;这种数字展厅的建设形式&#xff0c;逐渐成为了展示产品和服务的重要途径&#xff0c;而在多媒体技术的展示形式中&#xff0c;虚拟主持人成为高人气互动展项之一&#xff0c;它在其中扮演着引导观众、传递信息的角色&#xff0c;并发挥着…

【钉钉】通过链接方式跳转到应用机器人聊天窗口

使用这个方式&#xff1a; dingtalk://dingtalkclient/action/jumprobot?dingtalkid可以通过机器人回调拿到chatbotUserId这个字段&#xff0c;这个就是dingtalkid。 示例&#xff1a;&#xff08;chatbotUserId是不规则字符串&#xff0c;链接拼上这个参数最好 urlencode一…

基于51单片机超声波测距测液位及报警设计

**单片机设计介绍&#xff0c; 基于51单片机超声波测距测液位及报警设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的超声波测距测液位及报警系统是一种用于测量储液罐或水箱中液位高度并进行液位监测和报警的设…

Echarts 大屏注册自定义地图解析文件流报错问题解决

效果图: 1、首先通过后台接口获取到SVG图片的文件流,postman能够正确解析出文件流,前端调用api时需要设置返回的响应格式为image/svg+xml格式,否则解析失败 拿到文件流后是这样的 <?xml version="1.0" encoding="utf-8"?> <!-- Generator: …

【深度学习】基于深度学习的超分辨率图像技术一览

超分辨率(Super-Resolution)即通过硬件或软件的方法提高原有图像的分辨率&#xff0c;图像超分辨率是计算机视觉和图像处理领域一个非常重要的研究问题&#xff0c;在医疗图像分析、生物特征识别、视频监控与安全等实际场景中有着广泛的应用。 SR取得了显著进步。一般可以将现有…