题目描述

淘汰赛制是一种极其残酷的比赛制度。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. select标签下option标签里value属性有什么用以及和text的区别

    转自:http://blog.csdn.net/summer_sy/article/details/54572398 1:value的用处 <select > <option val ...

  2. 【转载】大型系统中使用JMS优化技巧

    [本文转自:http://www.javabloger.com/article/sun-openmq-jms-large-scale-systems.html] 我们先来看看在Sun OpenMQ系统 ...

  3. Linux部署之批量自动安装系统之测试篇

    1.         客户端从网络启动如下   2.         复制vesamenu.c32文件可解决上面的问题   3.         客户端再次启动   4.         选择第一个进 ...

  4. 前端压缩图片,前端压缩图片后转换为base64.

    今天利用一上午研究了一下前端如何将5m左右的照片转换base64大小为 100k以内! 有两个链接:https://www.cnblogs.com/007sx/p/7583202.html :http ...

  5. (WC2018模拟十二)【FJOI2016集训Day7T2】点对游戏

    题解: 还好...看懂题目就好做了.(Orzdyh) 首先选择的点是等概率随机的,也就是说每种选择结果的概率都是一样的,所以选择一个点的时候已经选择的点不会有影响,那么就可以直接算出点对个数再求总体的 ...

  6. 关于Vue中父子组件相互传值

    Header为子组件,Home为父组件,通过子组件调用父组件 运行结果如下 下面是父组件调用子组件的案例 通过button按钮的click事件 图一是父组件Home中的run方法,图二是msg和fun ...

  7. tinymce原装插件源码分析(五)-searchreplace

    searchreplace 功能:查找和替换 代码注释见: https://www.xunhanliu.top/static/js/tinymce/plugins/searchreplace/plug ...

  8. java redistemplate

    //添加一个 key ValueOperations<String, Object> value = redisTemplate.opsForValue(); value.set(&quo ...

  9. 【Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) B】 Code For 1

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把序列生成的过程看成一颗树 会发现最后形成的是一颗二叉树. 每个二叉树上的节点就对应了序列中的一个数字. 如果我们把每个节点都往下投 ...

  10. [Javascript] Required function arguments in Javascript

    In Javascript, all function arguments are optional by default. That means if you ever forget to pass ...