见到网上的大佬们都用了位运算。。表示看不懂就自己想了,还挺好想的(然而我不会告诉你我因为p的数组问题卡了半小时顺便D了ZZZ大佬的数据)

DP方程(伪)就是:第t轮第i个队晋级的可能=第t-1轮第i个队晋级的可能*第t-1轮第(枚举所有可以在这轮和我对战的队)队晋级的可能*战胜他的可能

所以说该怎么枚举可以在这轮和我对战的队?我们仔细研究淘汰对战表(图丑勿喷)

这里u表示在这一轮,在当前这个组里是第几个队。然后就会发现,单数组和双数组(当t=2时,3、4处于一个双数组)他要对战的队伍是不一样的,所以要分情况讨论。单数组要往下找队对战,双数组就反之。

#include<cstdio>
#include<cstring>
using namespace std;
double p[][],f[][];
int main()
{int N,n;
while(scanf("%d",&N)!=EOF)
{
if(N==-)break; n=;for(int i=;i<=N;i++)n*=;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%lf",&p[i][j]); memset(f,,sizeof(f));
for(int i=;i<=n;i++)f[][i]=1.0;
int ln=;
for(int t=;t<=N;t++)
{
int u=,z=;
for(int i=;i<=n;i++)
{
u++;if(u==ln+){u=;z=-z;}
if(z==)
{
int end=i-u+ln;
for(int j=end+;j<=end+ln;j++)
f[t][i]+=f[t-][i]*f[t-][j]*p[i][j];
}
else
{
int str=i-u+;
for(int j=str-;j>=str-ln;j--)
f[t][i]+=f[t-][i]*f[t-][j]*p[i][j];
}
}
ln*=;
} int ans=;
double mmax=;
for(int i=;i<=n;i++)
if(f[N][i]>mmax)
{
mmax=f[N][i];
ans=i;
}
printf("%d\n",ans);
}
return ;
}

最新文章

  1. C++ 系列:内存布局
  2. css水平垂直居中(绝对定位居中)
  3. 【简易版】HashMap(增删改查)
  4. .net(c#) winform文本框只能输入数字,不能其他非法字符
  5. HIbernate学习笔记(五) 关系映射之一对多与多对一
  6. JS 时间与时间戳的相互转换
  7. Centos6.4 搭建Git服务器 (最简单的方法)
  8. 针对ie9写特殊的样式
  9. [ACdream]小晴天老师系列——竖式乘
  10. 一种转换Ipv6地址的方法
  11. 洛谷P2257 YY的GCD 莫比乌斯反演
  12. linux 邮件服务器—Extmail
  13. react native第一天--------KnightRider
  14. Beta冲刺! Day4 - 砍柴
  15. Qt5中的lambda表达式和使用lambda来写connect
  16. shell脚本死循环检查是否有特定的路由,若存在进行删除操作
  17. word中替换【换行符】与【回车符】
  18. XSL自定义函数
  19. SoundPool跑套图片
  20. 变动性算法源代码分析与使用示例(copy_backward、 transform、 replace_copy_if 等)

热门文章

  1. 03003_Http响应
  2. bzoj2973 入门oj4798 石头游戏
  3. dataTables中固定表头
  4. 图的最小生成树——Prim算法
  5. MT6755 使用R63350 IC 出现唤醒概率性闪白,并导致ESD FAIL
  6. 把disable maven nature后的项目,恢复菜单呈现出来(Convert to Maven Project)
  7. msp430入门编程12
  8. AlertDialog自定义
  9. hdu 1429 bfs+二进制状态压缩
  10. Codeforces Manthan, Codefest 18 (rated, Div. 1 + Div. 2) D,E