首页 > 其他分享 >第7周--淘汰赛

第7周--淘汰赛

时间:2023-05-02 13:55:28浏览次数:38  
标签:国家 -- 淘汰赛 front second pair ##

# 【深基16.例1】淘汰赛

## 题目描述

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

## 输入格式

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

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

数据保证不存在平局。

## 输出格式

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

## 样例 #1

### 样例输入 #1

```
3
4 2 3 1 10 5 9 7
```

### 样例输出 #1

```
1
```

代码

#include<iostream>
#include<queue>
#include<map>
using namespace std;
int main(){
	int n;
	queue<pair<int,int> > q;	//pair是stl中的数据结构,这里用first表示国家号,second表示国家实力 
	cin>>n;
	n=1<<n;				//位运算,等价与n=pow(2,n)(位运算更快)
	for(int i=1;i<=n;i++){
		int x;
		cin>>x;
		q.push(make_pair(i,x));	//make_pair(i,x)就是建立一个first为i,second为x的pair 
	}
	while(q.size()>2){		//循环将比赛进行至只剩前两名(q.size()为2是时要跳出循环单独判断亚军) 
		pair<int,int> x,y;
		x=q.front();
		q.pop();
		y=q.front();
		q.pop();
		if(x.second>y.second){	//从队头取出两个队,进行比较后将较强的队压入队尾 
			q.push(x);
		}else{
			q.push(y);
		}
	}
	pair<int,int> x,y;
	x=q.front();
	q.pop();
	y=q.front();
	q.pop();
	if(x.second>y.second){		//较弱的那队时亚军,将其国家号输出 
		cout<<y.first<<endl;
	}else{
		cout<<x.first<<endl;
	}
	return 0;
}

标签:国家,--,淘汰赛,front,second,pair,##
From: https://www.cnblogs.com/gsq1/p/17367605.html

相关文章

  • 浅谈如何使用 github.com/kardianos/service
    在实际开发过程中,有时候会遇到如何编写Go开机自启服务的需求,在linux中我们可以使用systemd来进行托管,windows下可以通过注册表来实现,mac下可以通过launchd来实现,上面的方式对于开发者来说,并不是什么困难的事情,但是对于使用者而言,是并不希望通过这么复杂的方式来达到开机自启的功能......
  • IT工具知识-18: ADB操作笔记(自用)
    Linux下的常用命令(持续更新)终端使用bashshell查询安卓设备当前活动的APP包名和活动窗口名adbshelldumpsyswindowwindows|grep-E'mCurrentFocus|mFocusedApp'启动指定app下的指定窗口app包名和活动窗口名都要提供,否则无法启动adbshellamstart包名/活动窗口......
  • 解决Matlab在Linux下无法使用hardware OpenGL的问题
    解决Matlab在Linux下无法使用hardwareOpenGL的问题1报错信息在命令行使用命令matlab-nodesktop-nosplash启动Matlab时,出现如下报错:MATLABisselectingSOFTWAREOPENGLrendering.在查阅ArchWikiMatlabOpenGLAcceleration栏目后,发现这是因为Matlab未启用OpenGL硬件加......
  • vue学习 第六天 浮动 (float) 和 页面传统布局(标准流、浮动、定位)。
    浮动(float)1、传统网页布局的三种方式(3种)网页布局的本质---用CSS来摆放盒子。把盒子摆放到相应位置。CSS提供了三种传统布局方式(盒子如何进行排列顺序):普通流(标准流)、浮动、定位2、标准流(普通流/文档流)就是标签按照规定好默认方式排......
  • 《花雕学AI》27:如何在ChatGPT时代提高数字媒体艺术的原创性和价值?
    引言数字媒体艺术是指使用各种数字、信息技术制作的各种形式的有独立审美价值的艺术作品,具有模拟现实的虚拟性、艺术创造的想象性、交互性和使用网络媒体的基本特征。数字媒体艺术是一个跨自然科学、社会科学和人文科学的综合性学科,集中体现了“科学、艺术和人文”的理念。数字媒......
  • springboot常用注解
    ......
  • 哈希表与布隆过滤器
    一、哈希的整体思想最简单的哈希表其实就是数组,从数组中取出一个数的时间复杂度是O(1)的。但是数组下标类型是整型的,万一我的下标类型不是整型了该怎么办呢?比如说字符串型,典型的就是我想查找某个单词存不存在。还有些更复杂的数据类型,比如自定义的类型。那么问题就来了,如何满足任......
  • 依次打印<偶数>
    #include<stdio.h>#include<Windows.h>     //=运行速度控制#include<stdlib.h>      //清屏intmain(){ inti=0; while(i<9999999999999999999) { if(i%2!=0) {  i++;  continue; } else {  printf("%d\n......
  • PHP use 动态类
    本文主要和大家分享PHP新特性use加强使用,从同一namespace导入的类、函数和常量现在可以通过单个use语句一次性导入了。<?php//PHP7之前版本用法<?phpusesome\namespace\ClassA;usesome\namespace\ClassB;usesome\namespace\ClassCasC;usefunctionsome\name......
  • mysql在删索引时报错ERROR 1075
    问题描述:mysql在删索引时报错ERROR1075,如下所示:数据库:mysql8.0.11系统:centos7.91、问题重现createtabletest_table1(idint(11)notnullauto_increment,namechar(100)notnull,addresschar(100),descriptionchar(100),uniqueindexuniqidx(id),indexmultic......