http://poj.org/problem?

id=3071

大致题意:有2^n个足球队分成n组打比赛。给出一个矩阵a[][],a[i][j]表示i队赢得j队的概率。n次比赛的流程像这样France \'98。

问最后哪个队最可能得冠军。


思路:概率dp问题。ans[i][j]表示第i轮中j队获胜的概率。


#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <math.h>
#include <string.h>
#include <queue>
#include <string>
#include <stdlib.h>
#define LL long long
#define _LL __int64
#define eps 1e-8using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 10;int n;
int m;
double a[130][130];
double ans[maxn][130];
int pow2[8] = {1,2,4,8,16,32,64,128};void solve()
{memset(ans,0,sizeof(ans));int t,r;for(int i = 1; i <= m; i++){if(i&1)ans[1][i] = a[i][i+1];elseans[1][i] = a[i][i-1];}for(int i = 2; i <= n; i++){for(int j = 1; j <= m; j++){r = pow2[i]; //周期if(j % r == 0) t = j/r;else t = j/r+1;if(j%r >= 1 && j%r <= r/2){for(int k = t*r; ; k--){if(k%r != 0 && k%r <= r/2)break;ans[i][j] += ans[i-1][j]*a[j][k]*ans[i-1][k];}}else{for(int k = (t-1)*r+1; ; k++){if(k%r >= r/2+1)break;ans[i][j] += ans[i-1][j]*a[j][k]*ans[i-1][k];}}}}}int main()
{while(~scanf("%d",&n)){if(n == -1) break;m = pow2[n];for(int i = 1; i <= m; i++)for(int j = 1; j <= m; j++)scanf("%lf",&a[i][j]);solve();double res = ans[n][1];int pos = 1;for(int i = 2; i <= m; i++){if(res < ans[n][i]){res = ans[n][i];pos = i;}}printf("%d\n",pos);}return 0;
}

poj 3071 Football(概率dp)相关推荐

  1. poj 1322 Chocolate (概率dp)

    ///有c种不同颜色的巧克力.一个个的取.当发现有同样的颜色的就吃掉.去了n个后.到最后还剩m个的概率 ///dp[i][j]表示取了i个还剩j个的概率 ///当m+n为奇时,概率为0 # inclu ...

  2. poj 3071 Football

    http://poj.org/problem?id=3071 2^n 支足球队比赛,共比n场,第一场1号与2号比,3号与4号比-- 每场胜出者进入下一场,输者淘汰 每一场都是相邻的两个队伍比拼 已知任 ...

  3. 【原创】概率DP总结 by kuangbin

    概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...

  4. 插头DP 概率DP / 期望DP

    插头DP && 概率DP / 期望DP 写在前面: 插头DP P5056 [模板]插头dp 手写哈希表的方法: 拉链法的代码如下: 开放寻址法的代码如下: 接下来是这道题的代码实现: ...

  5. Collecting Bugs POJ - 2096(基础概率dp+期望模板)

    题意: 有s个系统,n种bug,小明每天找出一个bug,可能是任意一个系统的,可能是任意一种bug,即是某一系统的bug概率是1/s,是某一种bug概率是1/n. 求他找到s个系统的bug,n种bug ...

  6. 关于概率dp的个人理解与总结

    原文来自:http://blog.csdn.net/wdcjdtc/article/details/38424029 首先,概率dp主要解决的是关于概率问题和期望问题的求解. 难点和普通dp一样在于d ...

  7. 【BZOJ - 3036】绿豆蛙的归宿(概率DAG图dp,拓扑排序,概率dp,期望的线性性)

    题干: 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度.绿豆蛙从起点出发,走向终点. 到达每一个顶点时,如 ...

  8. Check the difficulty of problems (概率dp求概率)

    Check the difficulty of problems POJ - 2151 大致题意: m个问题,t个队伍,要求冠军队伍至少解决n个问题,给出每个队伍解决每个问题的概率 求每一个队至少解决 ...

  9. 2018.09.01 poj3071Football(概率dp+二进制找规律)

    传送门 概率dp简单题. 设f[i][j]表示前i轮j获胜的概率. 如果j,k能够刚好在第i轮相遇,找规律可以发现j,k满足: (j−1)>>(i−1)(j−1)>>(i−1) ...

最新文章

  1. 如何用C#检查硬盘是否是固态硬盘SSD
  2. LeetCode每日一题 143. 重排链表
  3. mysql六:数据备份、pymysql模块
  4. C/C++ OpenCV五种滤波器综合示例
  5. 2021瑞安高考成绩查询,温州教育网官网登录入口2021瑞安中考成绩查询中招查分系统...
  6. python 30个小代码_30个Python常用极简代码,拿走就用
  7. linux rootfs制作
  8. window使用fliqlo 教程
  9. 简单的围棋棋盘打谱设计C#实现
  10. iPhone 12面容ID解锁设置
  11. 2017年杭州市大学生自主创业政策
  12. E - Enigma Gym - 101889E dp求可除一个整数的最小数
  13. can协议crc计算_CAN协议中CRC编码的硬件实现
  14. 从CVPR 2021的论文看计算机视觉的现状
  15. mark一下江南一点雨的微人事开源项目
  16. 知识管理在企业业务中如何体现其价值
  17. http://www.dewen.net.cn/q/14665/个人感觉用二分法最完美的,需要操作系统支持随机读取指定一行的数据,貌似现在还不行,江湖救急呀...
  18. 关键词挖掘,挖掘关键词的方法有哪些,具体的操作步骤是怎样的?
  19. 2021年,薪酬最高的5种编程语言
  20. 第八章 ArcGIS地图制图 点线面符号、专题图、标记的制作

热门文章

  1. 如何玩转跨库Join?跨数据库实例查询应用实践
  2. 使用R语言分析微信好友
  3. PHP学习2——基本语法
  4. Winform让扫描枪听话,防止在有焦点的地方就扫码输入的尴尬
  5. Java实现的文件Copy例子
  6. 地图检索 – 与众不同
  7. 创纪录!Oracle关键补丁更新修复关键漏洞曝光
  8. Android之玩转MPAndroidChart让(折线图、柱形图、饼状图、散列图、雷达图)优雅的舞...
  9. 函数作用域的静态变量
  10. github Git 原理简介