题目描述

淘汰赛制是一种极其残酷的比赛制度。2n名选手分别标号1,2,3,…,2^n-1,2^n,他们将要参加n轮的激烈角逐。每一轮中,将所有参加该轮的选手按标号从小到大排序后,第1位与第2位比赛,第3位与第4位比赛,第5位与第6位比赛……只有每场比赛的胜者才有机会参加下一轮的比赛(不会有平局)。这样,每轮将淘汰一半的选手。n轮过后,只剩下一名选手,该选手即为最终的冠军。

现在已知每位选手分别与其他选手比赛获胜的概率,请你预测一下谁夺冠的概率最大。

输入输出格式

输入格式:

输入文件elimination.in。第一行是一个整数n(l≤n≤l0),表示总轮数。接下来2^n行,每行2^n个整数,第i行第j个是Pij(0≤pij≤100,Pii=0,Pij+Pji=100),表示第i号选手与第j号选手比赛获胜的概率。

输出格式:

输出文件elimination.out。只有一个整数c,表示夺冠概率最大的选手编号(若有多位选手,输出编号最小者)。

输入输出样例

输入样例#1:

  2
0 90 50 50
10 0 10 10
50 90 0 50
50 90 50 0
输出样例#1:

 1

说明

30%的数据满足n≤3;100%的数据满足n≤10。

_NOI导刊2010提高(01)

思路:

对于样例,我们可以模拟一下:

1号选手通过第1轮(进入决赛)的概率为90%,即击败2号选手的概率。同理,2号选手通过第1轮的概率为10%,3号,4号选手都是50%。

对于3号选手通过第2轮(通过第n轮夺冠)的概率,我们可以分情况讨论。假设3号选手已经通过第1轮。如果1号选手通过第1轮(90%的可能性),则3号选手通过第2轮的概率为50%,即击败1号选手的概率,所以3号选手击败1号选手通过第2轮的概率为90%*50%=45%;如果2号选手通过第1轮(10%的可能性),则3号选手通过第2轮的概率为90%,即击败2号选手的概率,所以3号选手击败2号选手通过第2轮的概率为10%*90%=9%。所以3号选手击败对手通过第2轮的概率为45%+9%=54%,而这是在3号选手已经通过第1轮的基础上的概率,自然,3号选手最初时通过第2轮的概率只有50%*54%=27%。

同理,4号选手最初时通过第2轮的概率为27%,1号选手通过第2轮的概率为45%,2号选手为1%,45%>27%>27%>1%,所以答案输出1。

所以:每一位选手通过这一轮的概率为这一位选手通过上一轮的概率乘上这一位选手击败这一轮遇到的每一个对手的概率之和

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,num;
double maxn=-;
double map[][];
double f[],ff[];
int main(){
scanf("%d",&n);
num=pow(,n);
for(int i=;i<=num;i++)
for(int j=;j<=num;j++){
int x;
scanf("%d",&x);
map[i][j]=x*1.0/*1.0;
}
for(int i=;i<=num;i++)
if(i%==) f[i]=map[i][i-];
else f[i]=map[i][i+];
for(int i=;i<=n;i++){
for(int j=;j<=num;j++){
double bns=;
int l,r,aa=pow(,i-),tmp=(j-)/aa;
if(tmp%==){ l=aa*(tmp+)+; r=aa*(tmp+); }
else{ l=aa*(tmp-)+; r=aa*tmp; }
for(int k=l;k<=r;k++)
bns+=f[k]*map[j][k];
ff[j]=f[j]*bns;
}
for(int j=;j<=num;j++)
f[j]=ff[j];
}
int ans;
for(int i=;i<=num;i++)
if(f[i]>maxn){
ans=i;
maxn=f[i];
}
cout<<ans;
}

洛谷 P1769 淘汰赛制_NOI导刊2010提高(01)的更多相关文章

  1. 洛谷 P1777 帮助_NOI导刊2010提高(03) 解题报告

    P1777 帮助_NOI导刊2010提高(03) 题目描述 Bubu的书架乱成一团了!帮他一下吧! 他的书架上一共有n本书.我们定义混乱值是连续相同高度书本的段数.例如,如果书的高度是30,30,31 ...

  2. 洛谷 P1801 黑匣子_NOI导刊2010提高(06)(未完)

    P1801 黑匣子_NOI导刊2010提高(06) 题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个 ...

  3. [洛谷P1801]黑匣子_NOI导刊2010提高(06)

    题目大意:两个操作:向一个可重集中加入一个元素:询问第$k$大的数($k$为之前询问的个数加一) 题解:离散化,权值线段树直接查询 卡点:无 C++ Code: #include <cstdio ...

  4. 洛谷 P1801 黑匣子_NOI导刊2010提高(06)

    题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两种: ...

  5. 洛谷 P1801 黑匣子_NOI导刊2010提高(06) 题解

    昨晚恶补了一下二叉堆的内容 然后就找了几个二叉堆的题来做awa 然后发现用二叉堆做这题复杂度是O(nlogn) 但是有O(n)的解法 (某大佬这么说) 思路大概就是: 利用一个大根堆一个小根堆来维护第 ...

  6. 洛谷 P1950 长方形_NOI导刊2009提高(2)

    传送门 思路 首先定义\(h\)数组,\(h[i][j]\)表示第\(i\)行第\(j\)列最多可以向上延伸多长(直到一个被用过的格子) 然后使用单调栈算出 \(l_i\)和 \(r_i\) ,分别是 ...

  7. 淘汰赛制_NOI导刊2010提高(01)

    题目描述 淘汰赛制是一种极其残酷的比赛制度.2n名选手分别标号1,2,3,…,2^n-1,2^n,他们将要参加n轮的激烈角逐.每一轮中,将所有参加该轮的选手按标号从小到大排序后,第1位与第2位比赛,第 ...

  8. 洛谷 P1767 家族_NOI导刊2010普及(10)

    题目描述 在一个与世隔绝的岛屿上,有一个有趣的现象:同一个家族的人家总是相邻的(这里的相邻是指东南西北四个方向),不同的家族之间总会有河流或是山丘隔绝,但同一个家族的人不一定有相同姓氏.现在给你岛上的 ...

  9. 洛谷——P1767 家族_NOI导刊2010普及(10)

    P1767 家族_NOI导刊2010普及(10) 题目描述 在一个与世隔绝的岛屿上,有一个有趣的现象:同一个家族的人家总是相邻的(这里的相邻是指东南西北四个方向),不同的家族之间总会有河流或是山丘隔绝 ...

随机推荐

  1. NodeJS学习笔记 (3)域名解析-dns(ok)

    域名解析:dns.lookup() 比如我们要查询域名 www.qq.com 对应的ip,可以通过 dns.lookup() . var dns = require('dns'); dns.looku ...

  2. 移动端mete设置

    <!DOCTYPE html> <!-- 使用 HTML5 doctype,不区分大小写 --> <html lang="zh-cmn-Hans"&g ...

  3. Number(), parseInt(), parseFloat()

    var n="100.11px";console.log(Number(n));//NaNconsole.log(parseInt(n));//100console.log(par ...

  4. 一:1.2【print&input与变量和运算符】

    [路径] 绝对路径:从根目录开始链接的路径  --->cd C:\Windows\Boot\DVD\EFI\en-US 相对路径:不从根目录开始链接的路径 ----> cd Boot\DV ...

  5. 【codeforces 816A】Karen and Morning

    [题目链接]:http://codeforces.com/contest/816/problem/A [题意] 让你一分钟一分钟地累加时间; 问多长时间以后是个回文串; [题解] reverse之后如 ...

  6. Python学习第二天-编写三级菜单

    编写三级菜单:1. 运行程序输出第一级菜单2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单3. 菜单数据保存在文件中4. 让用户选择是否要退出5. 有返回上一级菜单的功能 # Author: z ...

  7. 不安全的直接对象引用:你的 ASP.NET 应用数据是否安全?

    介绍 作为一个在X94的航空工程师,你的老板要求你从2号楼的工程图中检索出一个特定的专利.不幸的是,进入大楼需要你出示你具有进入大楼的资格的证明,然后你迅速地以徽章的形式出示给了保安.到了十三楼,进入 ...

  8. hadoop学习;datajoin;chain签名;combine()

    hadoop有种简化机制来管理job和control的非线性作业之间的依赖.job对象时mapreduce的表现形式.job对象的实例化可通过传递一个jobconf对象到作业的构造函数中来实现. x. ...

  9. leetCode(38):Lowest Common Ancestor of a Binary Search Tree

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...

  10. 查看suse系统版本

    cat /etc/*-release OR lsb_release -d