题目选自洛谷P4715

二叉树知识点入门题目,便于学习、熟悉二叉树这种数据结构以及解题方法

用value[]和win[]分别来记录能力值和国家编号,

叶子层就是输入的能力值和国家编号,

对二叉树进行dfs,结束条件为叶子结点,

分别计算左右子树的结点值,并将获胜的编号、能力值保存到对应的父结点中,

最后比较二叉树2、3编号的能力值大小即可。

题目描述

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

输入格式

输出格式

输入输出样例

输入 1

3
4 2 3 1 10 5 9 7

输出 1

1

解题代码:

#include<stdio.h>
#include<iostream>
#include<stdlib.h>
using namespace std;
int value[260],win[260]; //value保存能力值,win记录国家编号
int n;
void dfs(int x){if(x >= 1<<n) //叶子结点直接返回return;else{dfs(2 * x); //左子树dfs(2 * x + 1); //右子树//走到这里后,代表已经到最底层了,可以计算了int lvalue = value[2 * x], rvalue = value[2 * x + 1];if(lvalue > rvalue){ //如果左边赢了win[x] = win[2 * x];value[x] = lvalue;}else{win[x] = win[2 * x + 1];value[x] = rvalue;}}
}
int main(){cin>>n;//保存数据到叶子结点for(int i=0;i< (1<<n);i++){cin>>value[i + (1<<n)]; //value叶子结点就是对应的能力值win[i + (1<<n)] = i + 1; //叶子结点首先是存放国家}dfs(1); //从根结点开始遍历cout<<((value[2]>value[3])?(win[3]):(win[2]));return 0;
}

二叉树——淘汰赛(洛谷 P4715)相关推荐

  1. 二叉树——二叉树问题(洛谷 P3884)

    题目选自洛谷P3884 ** 解题思路** 经过剖析样例,我微微思索手动模拟后发现 要找最近的公共祖先,一次次地向上找就好了嘛,其实这有点并查集地意思 寻找时可分为两种情况 1.两点在不同子树中,有公 ...

  2. 加分二叉树(洛谷-P1040)

    题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,-,n),其中数字1,2,3,-,n为节点编号.每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都 ...

  3. 用任意合法序列建立一棵二叉树(洛谷P1305题题解,Java语言描述)

    前言 这题是极其麻烦极其麻烦的一道题(前提是你不知道它有套路)-- 我们不讲那些歪门邪道,我们正儿八经的解一下,想正经求解,很麻烦很麻烦... 题目要求 P1305题题解 分析 这题你看着容易,那是你 ...

  4. 二叉树——新二叉树(洛谷 P1305)

    题目选自洛谷P1305 这篇用来二叉树入门,讲述遍历二叉树的基本过程代码, 新二叉树只是洛谷的题目叫这个. 对于该题,我们用一个结构体node来表示树的每个结点,这个结构体数组tree来代表一棵树. ...

  5. [洛谷P1040] 加分二叉树

    洛谷题目链接:加分二叉树 题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,-,n),其中数字1,2,3,-,n为节点编号.每个节点都有一个分数(均为正整数),记第i个节点的分数为di ...

  6. 信息学奥赛一本通 1981:【18NOIP普及组】对称二叉树 | 洛谷 P5018【NOIP2018 普及组】 对称二叉树

    [题目链接] ybt 1981:[18NOIP普及组]对称二叉树 洛谷 P5018[NOIP2018 普及组] 对称二叉树 [题目考点] 二叉树 [解题思路] 先求出二叉树中各子树的结点数 遍历二叉树 ...

  7. 二叉树——求先序排列(洛谷 P1030)

    题目选自洛谷P1030 首先,一点基本常识,给你一个后序遍历,那么最后一个就是根(如ABCD,则根为D). 因为题目求先序,意味着要不断找根. 那么我们来看这道题方法:(示例) 中序ACGDBHZKX ...

  8. 二叉树——医院设置(洛谷 P1364)

    题目选自洛谷P1364 从指定结点开始,使用DFS,对于某个结点来说,搜索的深度就是源点到这个结点的距离,单点贡献(该点所有居民到医院的距离之和)就是源点到这个结点的距离乘上该点的居民数量:然后加上自 ...

  9. 二叉树——美国血统(洛谷 P1827)

    题目选自洛谷P1827 根据前序.中序遍历求出后序遍历,这也是二叉树很重要且基本的知识,还是有必要练练. 至于什么是前.中.后序遍历,这里就不再过多讲述. 用手模拟求解是简单的,接下来看看如何用代码来 ...

最新文章

  1. 2016 ACM/ICPC Asia Regional Shenyang Online
  2. 中兴zxr10路由器重启命令_中兴交换机常用命令
  3. Opportunity text creation tool
  4. 堆载预压弹性变形怎样计算公式_一种风洞洞体堆载预压变形测量工艺的制作方法...
  5. iscsi:IO操作流程(四)
  6. 蓝桥杯 ADV-104算法提高 打水问题
  7. cocos2dx中的Rapidjson
  8. word wrap java控制台_word wrap 解惑
  9. RDV需要什么服务器系统,锐起RDV的教程
  10. Unity Shader零基础入门2:环境光、漫反射、高光
  11. [线性代数]向量2-范数三角不等式证明
  12. 十分钟超简单完成百度地图3.0离线功能
  13. 品牌对比 蜜雪冰城 VS 喜茶
  14. CLIP:多模态领域革命者
  15. win10的安装与优化
  16. 软件测试肖sir__010之mysql之总结(8)
  17. 学校计算机教室张贴些,计算机教室墙面布置方法是什么?
  18. php 1为false,false是1还是0
  19. Conclusion for Inheritance and Object Oriented Design
  20. 关于Flask框架中启动Scrapy爬虫框架时的几种问题的解决

热门文章

  1. javascript:URL编解码和父子窗口交互
  2. android 画中画模式自定义,Android 8.0 Oreo 画中画模式
  3. 输入法全屏_五笔输入法那么方便,为什么败给了拼音?如今,我可算是明白了...
  4. 汽车维护管理软件开源_感谢开源和自由软件维护者的10种方法
  5. devops f5_2017年排名前5的DevOps文章
  6. java图形界面重写坐标_重写自由软件和计算机图形的历史
  7. java 情侣最佳升高_2016年最佳情侣:显示经理和窗口经理
  8. 大佬 | 从啥也不会,到Java大佬,他就因为会了这一门绝技
  9. Bootstrap3 Font Awesome 字体图标旋转或翻转图标
  10. 二.开发记录之派勤工控机远程使用和ubuntu和ROS环境配置