博客
关于我
P4715 【深基16.例1】淘汰赛(变形线段树的模拟)
阅读量:286 次
发布时间:2019-03-01

本文共 1042 字,大约阅读时间需要 3 分钟。

题目描述

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

输入格式

输出格式

输入输出样例

输入 #1复制

34 2 3 1 10 5 9 7

输出 #1复制

1

当然这道题目有更简单的解法,但是因为在写这道题目的时候很自然的把这个比赛的逻辑关系画了出来就想到了刚刚总结的线段树,进行了一下变形,把父结点存成了两个儿子的最大值

#include 
using namespace std;typedef long long ll;struct Node{ ll val,id;};Node a[150],tree[600]; //一般为了防爆,线段树开比数组大四倍空间Node maxtree(Node lfnode,Node rinode){ return lfnode.val>rinode.val?lfnode:rinode;}Node mintree(Node lfnode,Node rinode){ return lfnode.val>rinode.val?rinode:lfnode;}void built(ll node,ll start,ll end){ if(start==end) { tree[node]=a[start]; return; } ll lfnode=node*2; ll rinode=node*2+1; ll mid=(start+end)/2; built(lfnode,start,mid); built(rinode,mid+1,end); tree[node]=maxtree(tree[lfnode],tree[rinode]);}int main(){ ll n; cin>>n; ll len=1<
>a[i].val; a[i].id=i; } built(1,1,len); //建树 cout<
<

 

转载地址:http://fgoo.baihongyu.com/

你可能感兴趣的文章
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>
Mysql8.0注意url变更写法
查看>>
Mysql8.0的特性
查看>>
MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看>>
MySQL8修改密码的方法
查看>>
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>
Mysql8在Windows上离线安装时忘记root密码
查看>>
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>
MYSQL:基础——3N范式的表结构设计
查看>>