POJ 3071 Football:概率dp
题目链接:http://poj.org/problem?id=3071
题意:
给定n,有2^n支队伍参加足球赛。
给你所有的p[i][j],表示队伍i打败队伍j的概率。
淘汰赛制。第一轮(1,2)两队比、(3,4)比、(5,6)比...共进行n轮比赛后产生冠军。
问你冠军最有可能是哪支队伍。
题解:
表示状态:
dp[i][j] = probability to win
第i支队伍能够参加第j轮比赛的概率。
找出答案:
i of max dp[i][n+1]
n轮比赛后,冠军该参加第n+1轮比赛(不存在的)。
如何转移:
now: dp[i][j]
dp[i][j+1] = ∑ (dp[i][j] * dp[k][j] * p[i][k]) (加法原理)
k: 第j轮比赛和i比的队伍
P(i晋级到j+1轮) = ∑ (P(i晋级到j轮) * P(k晋级到j轮) * P(i打败k))
怎样枚举k:
将所有队伍从0开始编号,并用二进制表示。
第i支战队第j轮会碰到的对手是:将i化为二进制,从右往左开始算,第j-1位会不同,第j位开始要相同,其余位任意的所有数。
边界条件:
dp[i][1] = 1
others = 0
注:本题居然卡cin。。。 (*`皿´*)ノ
AC Code:
// state expression:
// dp[i][j] = probability to win
// i: which team
// j: which round
//
// find the answer:
// i of max dp[i][n+1]
//
// transferring:
// dp[i][j+1] = sigma (dp[i][j] * dp[k][j] * p[i][k])
// 0<=t<(1<<(j-1))
// k = (((i>>(j-1))^1)<<(j-1))|t
//
// boundary:
// dp[i][1] = 1
#include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 10
#define MAX_T 150 using namespace std; int n;
int ans;
double p[MAX_T][MAX_T];
double dp[MAX_T][MAX_N]; void read()
{
for(int i=;i<(<<n);i++)
{
for(int j=;j<(<<n);j++)
{
scanf("%lf",&p[i][j]);
}
}
} void solve()
{
memset(dp,,sizeof(dp));
for(int i=;i<(<<n);i++)
{
dp[i][]=;
}
for(int j=;j<=n;j++)
{
for(int i=;i<(<<n);i++)
{
for(int t=;t<(<<(j-));t++)
{
int k=((((i>>(j-))^)<<(j-))|t);
dp[i][j+]+=dp[i][j]*dp[k][j]*p[i][k];
}
}
}
double maxn=;
for(int i=;i<(<<n);i++)
{
if(dp[i][n+]>maxn)
{
maxn=dp[i][n+];
ans=i+;
}
}
} void print()
{
printf("%d\n",ans);
} int main()
{
while(scanf("%d",&n)!=EOF)
{
if(n==-) break;
read();
solve();
print();
}
}
POJ 3071 Football:概率dp的更多相关文章
- poj 3071 Football (概率DP水题)
G - Football Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
- POJ 3071 Football(概率DP)
题目链接 不1Y都对不住看过那么多年的球.dp[i][j]表示i队进入第j轮的概率,此题用0-1<<n表示非常方便. #include <cstdio> #include &l ...
- poj 3071 Football(概率dp)
id=3071">http://poj.org/problem? id=3071 大致题意:有2^n个足球队分成n组打比赛.给出一个矩阵a[][],a[i][j]表示i队赢得j队的概率 ...
- POJ 3071 Football (概率DP)
概率dp的典型题.用dp[j][i]表示第j个队第i场赢的概率.那么这场要赢就必须前一场赢了而且这一场战胜了可能的对手.这些都好想,关键是怎么找出当前要算的队伍的所有可能的竞争对手?这个用异或来算,从 ...
- POJ 3071 Football
很久以前就见过的...最基本的概率DP...除法配合位运算可以很容易的判断下一场要和谁比. from——Dinic算法 Football Time ...
- POJ3071:Football(概率DP)
Description Consider a single-elimination football tournament involving 2n teams, denoted 1, 2, …, 2 ...
- POJ 3156 - Interconnect (概率DP+hash)
题意:给一个图,有些点之间已经连边,现在给每对点之间加边的概率是相同的,问使得整个图连通,加边条数的期望是多少. 此题可以用概率DP+并查集+hash来做. 用dp(i,j,k...)表示当前的每个联 ...
- poj 1322 Chocolate (概率dp)
///有c种不同颜色的巧克力.一个个的取.当发现有同样的颜色的就吃掉.去了n个后.到最后还剩m个的概率 ///dp[i][j]表示取了i个还剩j个的概率 ///当m+n为奇时,概率为0 # inclu ...
- [poj3071]football概率dp
题意:n支队伍两两进行比赛,求最有可能获得冠军的队伍. 解题关键:概率dp,转移方程:$dp[i][j] + = dp[i][j]*dp[i][k]*p[j][k]$表示第$i$回合$j$获胜的概率 ...
随机推荐
- 微信小程序 - 非Form数据怎么发送到后端?
通过设置异步缓存,就可以做到 wx.setStorageSync('imgs',imglist); 最后的提交信息:
- Mysql processlist命令
Mysql processlist命令 mysqladmin -uroot -proot processlist mysql 查看当前连接数 命令: show processlist; 如果是ro ...
- apue学习笔记(第六章 系统数据文件和信息)
UNIX系统的正常运作需要使用大量与系统有关的数据文件,例如,口令文件/etc/passwd和组文件/etc/group就是经常被多个程序频繁使用的两个文件. 口令文件 UNIX系统口令文件包含如下字 ...
- PyInstaller把.py转为.exe
http://www.pyinstaller.org/ http://blog.csdn.net/hmy1106/article/details/45151409 python pyinstaller ...
- 工作总结 a标签 <a href="/meetingtheme">Back to List</a> 返回上一级 指向 控制器 默认Index @Html.ActionLink("Edit59", "Edit", new { id = item.ID }) 默认当前控制器
@Html.ActionLink("Back to List", "Index") ---- <a href="/doctorinfo&qu ...
- VMware-Fusion-7.0.0-2103067 Pro SN:序列号+ 百度云下载地址
VMware-Fusion-7.0.0-2103067Pro SN: 5CQE9-H5PY3-04ND5-4Z6EW-3QGDE JZCNC-2H9X9-44TD9-Y0X5W-2KGP5 8ZNTC ...
- 根据URL发起HTTP请求,我的HTTPHelper。
完整的demo using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- 【WPF】ComboBox:根据绑定选取、设置固定集合中的值
问题场景 我有一个对象,里面有一个属性叫Limit,int类型.虽然int可取的范围很大,我想要在用户界面上限制Limit可取的值,暂且限制为5.10.15.20. 所以ComboBox绑定不是绑定常 ...
- 导出到Excel中NPOI
源地址:http://www.cnblogs.com/dreamof/archive/2010/06/02/1750151.html\ 1.NPOI官方网站:http://npoi.codeplex. ...
- 【BZOJ2229】[Zjoi2011]最小割 最小割树
[BZOJ2229][Zjoi2011]最小割 Description 小白在图论课上学到了一个新的概念——最小割,下课后小白在笔记本上写下了如下这段话: “对于一个图,某个对图中结点的划分将图中所有 ...