传送门

概率dp简单题。

设f[i][j]表示前i轮j获胜的概率。

如果j,k能够刚好在第i轮相遇,找规律可以发现j,k满足:

(j−1)>>(i−1)" role="presentation" style="position: relative;">(j−1)>>(i−1)(j−1)>>(i−1)^1==(k−1)>>(i−1)" role="presentation" style="position: relative;">1==(k−1)>>(i−1)1==(k−1)>>(i−1)。

简单举个例子?

假设有八个人,对应下来二进制为:000,001,010,011,100,101,110,111(注意要减一)。

对应上面的看一下应该就秒懂了。

比如说第一轮中,000和001是一组的,因为它们第0位不同,其余位相同。

然而第一轮中,001和010不是一组的,因为它们第1位也不同。

比如说第二轮中,000可以和011是一组的,因为它们第1位是不同的,且第2位相同。

但是000和110不是一组的,因为它们第2位不同。

于是就有了状态转移方程:

f[i][j]=∑j,k可以在一组f[i−1][j]∗f[i−1][k]∗p[i][j]" role="presentation" style="position: relative;">f[i][j]=∑j,k可以在一组f[i−1][j]∗f[i−1][k]∗p[i][j]f[i][j]=∑j,k可以在一组f[i−1][j]∗f[i−1][k]∗p[i][j]

解释:

前i-1轮j,k必须不输,且j必须在这一轮战胜k。

代码:

  1. #include<iostream>
  2. #include<cstdio>
  3. #define N 150
  4. using namespace std;
  5. double p[N][N],f[N][N];
  6. int n,len;
  7. int main(){
  8. while(scanf("%d",&len)){
  9. if(len==-1)break;
  10. n=1<<len;
  11. for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)scanf("%lf",&p[i][j]),f[i][j]=0;
  12. for(int i=1;i<=n;++i)f[0][i]=1;
  13. for(int k=1;k<=len;++k){
  14. for(int i=1;i<=n;++i){
  15. for(int j=1;j<=n;++j){
  16. if((((i-1)>>(k-1))^1)==((j-1)>>(k-1)))
  17. f[k][i]+=f[k-1][i]*f[k-1][j]*p[i][j];
  18. }
  19. }
  20. }
  21. double ans=0;
  22. int pos=0;
  23. for(int i=1;i<=n;++i)if(ans<f[len][i])ans=f[len][i],pos=i;
  24. printf("%d\n",pos);
  25. }
  26. return 0;
  27. }

2018.09.01 poj3071Football(概率dp+二进制找规律)的更多相关文章

  1. # E. Mahmoud and Ehab and the xor-MST dp/数学+找规律+xor

    E. Mahmoud and Ehab and the xor-MST dp/数学/找规律 题意 给出一个完全图的阶数n(1e18),点由0---n-1编号,边的权则为编号间的异或,问最小生成树是多少 ...

  2. 2018 北京区域赛 I - Palindromes (找规律)

    题目 HihoCoder - 1878 题目大意 给出k,让求出第k个回文数(k的“长度”不超过1e5) 题解 之前做过类似的题,是统计各阶段的数找到第K个回文数,但这里K太大,需要寻找新的方法. 打 ...

  3. 2018.09.01 loj#2330. 「清华集训 2017」榕树之心(树形dp)

    传送门 树形dp好题啊. 我们用w[i]" role="presentation" style="position: relative;">w[ ...

  4. 2018.09.01 hdu4405 Aeroplane chess (期望dp)

    传送门 期望dp简单题啊. 不过感觉题意不太对. 手过了一遍样例发现如果有捷径必须走. 这样的话就简单了啊. 设f[i]" role="presentation" sty ...

  5. 2018.09.01 独立集(树形dp)

    描述 给定一颗树(边权为1),选取一个节点子集,使得该集合中任意两个节点之间的距离都大于K.求这个集合节点最多是多少 输入 第一行是两个整数N,K 接下来是N-1行,每行2个整数x,y,表示x与y有一 ...

  6. LOJ #2540. 「PKUWC 2018」随机算法(概率dp)

    题意 LOJ #2540. 「PKUWC 2018」随机算法 题解 朴素的就是 \(O(n3^n)\) dp 写了一下有 \(50pts\) ... 大概就是每个点有三个状态 , 考虑了但不在独立集中 ...

  7. HDU 1203 I NEED A OFFER (01背包&&概率dp)

    M - I NEED A OFFER! Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  8. 2018.09.01 09:22 Exodus

    Be careful when writing in the blog garden. Sometimes you accidentally write something wrong, and yo ...

  9. 2018.09.01 09:08 Genesis

    Nothing to think about, I don't know where to start, the mastery of learning is not an easy task, yo ...

随机推荐

  1. leetcode118

    public class Solution { public IList<IList<int>> Generate(int numRows) { var list = new ...

  2. 微信公众号自动回复 node

    纯属分享记录: app.js var bodyParser = require('body-parser'); require('body-parser-xml')(bodyParser); var ...

  3. PadLeft 补零

    补零 PadLeft -Caption.Length())+Caption; UnicodeString __fastcall StringOfChar(WideChar Ch, int Count) ...

  4. DNS配置注意事项 正在连接网络

    故障现象 公司规模不是很大,大概有50多台计算机,购买了两台IBM服务器.由于内部使用的某个应用软件需要Windows域的支持,所以在这两台IBM服务器上启用了windows 2000 Server的 ...

  5. ABAP-SET UPDATE TASK LOCAL

    SET UPDATE TASK LOCAL 影响 切换本地更新任务.这意味着当您指定  CALL FUNCTION ... IN UPDATE TASK时,更新数据不会存储在数据库中,而是存储在ABA ...

  6. python 逐行读取文本

    f = open("foo.txt") # 返回一个文件对象line = f.readline() # 调用文件的 readline()方法while line: print li ...

  7. 傅里叶变换--MP3、JPEG和Siri背后的数学

    http://blog.jobbole.com/51301/ 九年前,当我还坐在学校的物理数学课的课堂里时,我的老师为我们讲授了一种新方法,给我留下了深刻映像. 我认为,毫不夸张地说,这是对数学理论发 ...

  8. mysql 1292-Truncated incorrect double value

    sql = "select id from company where date_year_month = %s" % "2017-3" 出错 将%s改为'%s ...

  9. 由于C++类库版本不同导致的OpenCV编译链接错误

    太长不看版:GCC4和GCC5使用的C++标准库下,string的名字不一样,导致链接错误. 之前在Ubuntu下使用OpenCV的时候一切正常.后来再次编译的时候,连接器提示有些库函数找不到: ma ...

  10. How to Pronounce T and D between Consonants

    How to Pronounce T and D between Consonants Share Tweet Share Tagged With: Dropped T What happens to ...