组委会正在为美团点评CodeM大赛的决赛设计新赛制
比赛有 n 个人参加(其中 n 为2的幂),每个参赛者根据资格赛和预赛、复赛的成绩,会有不同的积分。比赛采取锦标赛赛制,分轮次进行,设某一轮有 m 个人参加,那么参赛者会被分为 m/2 组,每组恰好 2 人,m/2 组的人分别厮杀。我们假定积分高的人肯定获胜,若积分一样,则随机产生获胜者。获胜者获得参加下一轮的资格,输的人被淘汰。重复这个过程,直至决出冠军。
现在请问,参赛者小美最多可以活到第几轮(初始为第0轮)?
输入描述:
第一行一个整数 n (1≤n≤ 2^20),表示参加比赛的总人数。
接下来 n 个数字(数字范围:-1000000…1000000),表示每个参赛者的积分。
小美是第一个参赛者。
输出描述:
小美最多参赛的轮次。
输入例子:
4
4 1 2 3
输出例子:
2
模拟一下比赛过程即可:
我的思路是,尽量让小美和比她分数低(包括相同,因为相同时是随机比赛结果,且要求能通过的最大比赛场次)的选手去比赛,那么首先想到排序,再求出小美分数在排序数组中的上界,计算出比小美分数高的选手数量r,然后就是模拟比赛的过程。
将选手划分为两个阵营(l:分数<=小美的选手,包括小美; r: 分数>小美的选手)。
规则是:在一轮比赛中,如果r为奇数,需要在l个中,抽一个(比小美分数小的)给r才能比赛,
如果l==1,即只剩小美一个人了,那这局肯定是输的,不计算在内,这时可能r中可能还有选手,但小美只能到这了。
如果l>1,那这一轮比赛分别在l-1个选手, 与r+1个选手, 两个阵营内进行。小美在l阵营中,肯定会赢。胜利次数+1。
在一轮比赛中,如果r 为0,小美一直比下去。
代码:
#include <iostream>
#include <vector>
#include <algorithm> using namespace std; int main()
{
int n;
cin >> n;
vector<int> a;
int data;
for( int i = ; i < n; i++ )
{
cin >> data;
a.push_back( data );
}
data = a[];
sort( a.begin(), a.end() );
int r = a.end() - upper_bound( a.begin(), a.end(), data ); //cout << "r is: " << r << endl; int l = n - r;
int cnt = ;
if( r == )
{
cnt += ( l / );
} while( r > && l > )
{
if( r & )
{
r++;
l--;
}
cnt++;
r /= ;
l /= ;
}
cout << cnt << endl;
return ;
}
另外还有一种更简单的思路:
也是小美只需要和小于等于自己积分的选手(num个)比较即可,比较次数就是log2 num次。
#include <iostream>
#include <algorithm>
#include <cmath> using namespace std; int main()
{
int n;
cin >> n;
int data, other, sum = ;
cin >> data;
for( int i = ; i < n; i++ )
{
cin >> other;
if( other <= data )
{
sum++;
}
}
cout << (int)( log( sum ) / log( ) ) << endl;
return ;
}
组委会正在为美团点评CodeM大赛的决赛设计新赛制的更多相关文章
- CodeM美团点评编程大赛初赛A轮
因为语文太差弃赛,第一个追及问题看不懂我就弃赛了.打进复赛确实挺难的,补一下题,锻炼下就行了. 身体训练 时间限制:1秒 空间限制:32768K 美团外卖的配送员用变速跑的方式进行身体训练.他们训练的 ...
- CodeM美团点评编程大赛复赛 做题感悟&题解
[T1] [简要题意] 长度为N的括号序列,随机确定括号的方向:对于一个已确定的序列,每次消除相邻的左右括号(右左不行),消除后可以进一步合并和消除直到不能消为止.求剩下的括号的期望.\(N \l ...
- CodeM美团点评编程大赛初赛B轮 黑白树【DFS深搜+暴力】
[编程题] 黑白树 时间限制:1秒 空间限制:32768K 一棵n个点的有根树,1号点为根,相邻的两个节点之间的距离为1.树上每个节点i对应一个值k[i].每个点都有一个颜色,初始的时候所有点都是白色 ...
- [题解] CodeM美团点评编程竞赛资格赛题
最近看到牛课网美团一个编程竞赛,想着做做看,结果一写就是两天..真是写不动了啊.话不多说,下面开始我的题解. 题目大致还是比较考察思维和代码能力(因为自己代码能力较弱,才会觉得比较考察代码能力吧= = ...
- O2O已死?不!美团点评们迎来新风口
当年的千团大战,巅峰时期曾涌入了5000多家团购网站,刘旷本人也参与了此次团购大战.而就在当时很多人都唱衰团购的时候,美团和大众点评却最终脱颖而出,市值一路飙升,人人网旗下的糯米网因为卖给了百度,也得 ...
- docker最佳实践-----美团点评的分享
美团点评容器平台简介 本文介绍美团点评的Docker容器集群管理平台(以下简称“容器平台”).该平台始于2015年,是基于美团云的基础架构和组件而开发的Docker容器集群管理平台.目前该平台为美团点 ...
- 美团2018年CodeM大赛-初赛B轮 B 配送(最短路)
美团2018年CodeM大赛-初赛B轮 B 配送 题意 题解 对于每个任务,只要从上个任务的终点出发即可. 时间.地点很少,可以算出每个地点-时间的最小花费. 以题目描述的起点终点起始结束时间建图,很 ...
- 深度学习在美团点评推荐平台排序中的应用&& wide&&deep推荐系统模型--学习笔记
写在前面:据说下周就要xxxxxxxx, 吓得本宝宝赶紧找些广告的东西看看 gbdt+lr的模型之前是知道怎么搞的,dnn+lr的模型也是知道的,但是都没有试验过 深度学习在美团点评推荐平台排序中的运 ...
- 接入多家ERP厂商,美团点评餐饮高速路开启
前段时间美团点评CEO王兴所提出的中国互联网进入下半场观点引发了互联网从业人士以及网友们的热议.当时王兴提出,当前国内外所有的互联网公司包括美团点评在内都还远没有做好整个产业链的服务,美团点评也只做了 ...
随机推荐
- 计算机网络协议包头赏析-TCP
仍然先把TCP报文段的格式放在这里,然后我们看图说话: TCP报文段也分为首部和数据两部分,首部默认情况下一般是20字节长度,但在一些需求情况下,会使用“可选字段”,这时,首部长度会有所增加. 下面, ...
- 9.mysql-存储过程.md
目录 创建 创建 -- 创建存储过程 DELIMITER $ -- 声明存储过程的结束符 CREATE PROCEDURE pro_test() --存储过程名称(参数列表) BEGIN -- 开始 ...
- PowerDesigner 设置code不等于name
设置 code不等于name: 工具 - 常规选项 - “Dialog” - "code不等于name",取消选中
- Centos7.x Docker桥接网络
基于Centos7.x构建Docker桥接网络, 配置bridge桥接网络可以直接设置网卡配置文件: 自定义桥接网络设置如下: 关掉docker0 ifconfig docker0 down 删除do ...
- php zip扩展的一些基本操作
public function zip_test() { $zip_obj = new ZipArchive(); $res = $zip_obj->open('/data1/www/www.k ...
- jdk 11特性
JDK 11 总共包含 17 个新的 JEP ,分别为: 181: Nest-Based Access Control(基于嵌套的访问控制) 309: Dynamic Class-File Const ...
- php loop循环 拿到键名
{loop $nianjian['dache'] $key $v} $key能拿到键名(微擎系统试过可以)
- openssl数字证书常见格式 协议
证书主要的文件类型和协议有: PEM.DER.PFX.JKS.KDB.CER.KEY.CSR.CRT.CRL .OCSP.SCEP等. PEM – Openssl使用 PEM(Privacy Enha ...
- 1、CDH 搭建Hadoop在安装之前(存储空间规划)
Cloudera Manager的存储空间规划 最低要求角色: 完全管理员 Cloudera Manager跟踪许多后台进程中的服务,作业和应用程序的度量标准.所有这些指标都需要存储.根据组织的大小, ...
- Global Illumination
[Global Illumination] Global Illumination (GI) is a system that models how light is bounced off of s ...