《洛谷深入淺出基礎篇》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.pswp.cn/news/166399.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166399.shtml
英文地址,請注明出處:http://en.pswp.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…