美团点评CodeM编程大赛-题二
来源:互联网 发布:数控车床编程教学ppt 编辑:程序博客网 时间:2024/05/17 22:35
美团点评CodeM编程大赛-题二
题目描述
组委会正在为美团点评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
语言
JAVA JDK1.7
- 代码
import java.util.Arrays;import java.util.Scanner;/** * @ClassName: * @Description: * @Author: Arthur * @Date: 2017/6/15 17:23 * @version: V1.0.0.0 */public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //参赛总人数 int n = sc.nextInt(); int[] score = new int[n]; //参赛者积分 for (int i = 0; i < n; i++) { score[i] = sc.nextInt(); } int myScore = score[0]; int myIndex=0; Arrays.sort(score); for (int i=0; i<n;i++) { if (myScore>=score[i])myIndex=i; } if (myIndex==0){ System.out.println(0); }else { int turnNum = (int) (Math.log(myIndex) / Math.log(2)); System.out.println(turnNum); } }}
注:这里只做了简单的实现,具体的时间优化,内存优化还未考虑。
阅读全文
1 0
- 美团点评CodeM编程大赛-题二
- CodeM美团点评编程大赛资格赛
- 美团点评CodeM编程大赛-题一
- # 美团点评CodeM编程大赛-题三
- # 美团点评CodeM编程大赛-题四
- # 美团点评CodeM编程大赛-题五
- CodeM美团点评编程大赛资格赛A题
- CodeM美团点评编程大赛资格赛B题
- CodeM美团点评编程大赛资格赛C题
- CodeM美团点评编程大赛 音乐研究
- CodeM美团点评编程大赛A轮 C.倒水
- CodeM美团点评编程大赛初赛A轮
- CodeM美团点评编程大赛初赛B轮
- CodeM美团点评编程大赛初赛B轮题解
- CodeM美团点评编程大赛A轮 C.倒水
- CodeM美团点评编程大赛复赛 A.配对游戏【思维+Dp】好题~
- CodeM美团点评编程大赛初赛A轮 数列互质
- CodeM美团点评编程大赛初赛A轮 B.合并回文子串【区间Dp】
- Redis 事务 详解
- D 04_JS事件的两种绑定方式,元素绑定和DOM绑定
- springboot项目使用gradle build失败
- Servlet3中的AsyncContext异步和多线程异步有什么区别
- iOS UIWebView + JS交互 总结
- 美团点评CodeM编程大赛-题二
- [Codeforces]Fox Dividing Cheese
- 利用Maven打War包引入本地Jar包
- ios block
- 三轮移动机器人在ros indigo下的定位、导航与轨迹规划构想
- Elipse clean的作用
- 【Unity】内存泄漏危害及处理方式(腾讯WeTest分析使用)
- AsyncTask的使用及原理
- 数据库事务隔离级别,ACID,spring事务传播性