问题描述:

组委会正在为美团点评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

完整判断版,但仅有case10%通过

 import java.util.Scanner;

 public class Main_2
{
public static void main(String arg[])
{
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int points[] = new int[num];
for(int i=0;i<num;i++)
{
points[i]=sc.nextInt();
}
double turn=num/2;
double random=0;
int xm_win=0;
label:
while(turn>=1)
{
int win=0;
for(int k=0;k<(turn*2);k +=2)
{
random= Math.random();
if((k==0 && points[0]<points[1]) || (k==0 && points[0]==points[1] && random>0.5))
{
break label;
}
if (points[k]<points[k+1])
{
points[win]=points[k+1];
}
else if (points[k]>=points[k+1])
{
points[win]=points[k];
}
else //(points[k] == points[k+1])
{
if(random>0.5) //random大于0.5后者赢
{
points[win]=points[k+1];
}
else //random小于0.5前者赢
{
points[win]=points[k];
}
}
System.out.println("point" + win +" "+ points[win] +" "+ "random:" + random);
win++;
}
System.out.println();
xm_win++;
turn =turn/2;
}
System.out.println(xm_win); //要求输出点
System.out.println(num + " " + turn + " " + random);
}
}

偷工减料判断版,但仅有case10%通过

 import java.util.Scanner;

 public class Main
{
public static void main(String arg[])
{
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int points[] = new int[num];
for(int i=0;i<num;i++)
{
points[i]=sc.nextInt();
}
double turn=num/2;
double random=0;
int xm_win=0;
label:
while(turn>=1)
{
int win=0;
for(int k=0;k<(turn*2);k +=2)
{
random= Math.random();
if((k==0 && points[0]<points[1]) || (k==0 && points[0]==points[1] && random>0.5))
{
break label;
}
if (points[k]<points[k+1])
{
points[win]=points[k+1];
}
else
{
points[win]=points[k];
}
System.out.println("point" + win +" "+ points[win] +" "+ "random:" + random);
win++;
}
System.out.println();
xm_win++;
turn =turn/2;
}
System.out.println(xm_win); //要求输出点
System.out.println(num + " " + turn + " " + random);
}
}

CodeM Qualifying Match Q2的更多相关文章

  1. CodeM Qualifying Match Q5

    问题描述: 给定两个整数 l 和 r ,对于所有满足1 ≤ l ≤ x ≤ r ≤ 10^9 的 x ,把 x 的所有约数全部写下来. 对于每个写下来的数,只保留最高位的那个数码.求1-9每个数码出现 ...

  2. CodeM Qualifying Match Q1

    问题描述: 具体地说,就是在第二段音频中找到一个长度和第一段音频相等且是连续的子序列,使得它们的 difference 最小.两段等长音频的 difference 定义为: difference = ...

  3. vlookup+match高亮显示行

    VLOOPUP =VLOOKUP("*"&O3,$A$2:$B$38,2,0) 第一个参数查找值,第二个参数查找范围,第三个参数返回第几列的值,第四个参数匹配方式(“,”, ...

  4. nyoj 58-最少步数 (BFS)

    58-最少步数 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:17 submit:22 题目描述: 这有一个迷宫,有0~8行和0~8列: 1,1,1 ...

  5. Elasticsearch 5.0 中term 查询和match 查询的认识

    Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...

  6. SQL Server-聚焦查询计划Stream Aggregate VS Hash Match Aggregate(二十)

    前言 之前系列中在查询计划中一直出现Stream Aggregate,当时也只是做了基本了解,对于查询计划中出现的操作,我们都需要去详细研究下,只有这样才能对查询计划执行的每一步操作都了如指掌,所以才 ...

  7. Java compiler level does not match解决方法

    从别的地方导入一个项目的时候,经常会遇到eclipse/Myeclipse报Description  Resource Path Location Type Java compiler level d ...

  8. 钉钉开放平台demo调试异常问题解决:hostname in certificate didn't match

    今天研究钉钉的开放平台,结果一个demo整了半天,这帮助系统写的也很难懂.遇到两个问题: 1.首先是执行demo时报unable to find valid certification path to ...

  9. .net正则表达式大全(.net 的 System.Text.RegularExpressions.Regex.Match()方法使用)

    正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET的System.dll类库提供的System.Text.RegularExpression ...

随机推荐

  1. Spark项目之电商用户行为分析大数据平台之(四)离线数据采集

  2. Linux备份压缩命令

    gzip 命令 把/home/chenjialins目录下的familyA目录下所有文件压缩成.gz文件cd /home/chenjialinstar -cvf /home/chenjialins/f ...

  3. rename 表

    ----执行过程 TS.TEST ---RENAME INDEX(索引) ALTER INDEX TS.IDX1_TEST RENAME TO IDX1_TEST_BAK; ALTER INDEX T ...

  4. 根据Uri获取文件的绝对路径

    简易版处理(实际并没发现有什么问题) public static String getRealPathFromURI(Context context, Uri contentURI) { String ...

  5. scrapy (三)各部分意义及框架示意图详解

    一.框架示意图 Scrapy由 Python 编写,是一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试 ...

  6. HDU 4857 逃生(反向建边的拓扑排序+贪心思想)

    逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  7. CAN总线优势

    CAN总线优势 RS-485基于R线构建的分布式控制系统而言, 基于CAN总线的分布式控制系统在以下方面具有明显的优越性: 首先,CAN控制器工作于多主方式,网络中 的各节点都可根据总线访问优先权(取 ...

  8. 牛掰本机限速软件appband

    带宽调度器AppBand可以为Windows应用程序分配网络带宽并指定数据收发的优先级,用软件的方式实现桌面应用的简单QOS调度.(1) P2P方式的下载软件(BT/eMule/迅雷等)或者在线播放占 ...

  9. 图文列表,关于Simpleadapter

    main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xm ...

  10. python安装opencv

    执行命令:pip install opencv-python即可