2018.09.01 poj3071Football(概率dp+二进制找规律)
传送门
概率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。
代码:
#include<iostream>
#include<cstdio>
#define N 150
using namespace std;
double p[N][N],f[N][N];
int n,len;
int main(){
while(scanf("%d",&len)){
if(len==-1)break;
n=1<<len;
for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)scanf("%lf",&p[i][j]),f[i][j]=0;
for(int i=1;i<=n;++i)f[0][i]=1;
for(int k=1;k<=len;++k){
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
if((((i-1)>>(k-1))^1)==((j-1)>>(k-1)))
f[k][i]+=f[k-1][i]*f[k-1][j]*p[i][j];
}
}
}
double ans=0;
int pos=0;
for(int i=1;i<=n;++i)if(ans<f[len][i])ans=f[len][i],pos=i;
printf("%d\n",pos);
}
return 0;
}
2018.09.01 poj3071Football(概率dp+二进制找规律)的更多相关文章
- # E. Mahmoud and Ehab and the xor-MST dp/数学+找规律+xor
E. Mahmoud and Ehab and the xor-MST dp/数学/找规律 题意 给出一个完全图的阶数n(1e18),点由0---n-1编号,边的权则为编号间的异或,问最小生成树是多少 ...
- 2018 北京区域赛 I - Palindromes (找规律)
题目 HihoCoder - 1878 题目大意 给出k,让求出第k个回文数(k的“长度”不超过1e5) 题解 之前做过类似的题,是统计各阶段的数找到第K个回文数,但这里K太大,需要寻找新的方法. 打 ...
- 2018.09.01 loj#2330. 「清华集训 2017」榕树之心(树形dp)
传送门 树形dp好题啊. 我们用w[i]" role="presentation" style="position: relative;">w[ ...
- 2018.09.01 hdu4405 Aeroplane chess (期望dp)
传送门 期望dp简单题啊. 不过感觉题意不太对. 手过了一遍样例发现如果有捷径必须走. 这样的话就简单了啊. 设f[i]" role="presentation" sty ...
- 2018.09.01 独立集(树形dp)
描述 给定一颗树(边权为1),选取一个节点子集,使得该集合中任意两个节点之间的距离都大于K.求这个集合节点最多是多少 输入 第一行是两个整数N,K 接下来是N-1行,每行2个整数x,y,表示x与y有一 ...
- LOJ #2540. 「PKUWC 2018」随机算法(概率dp)
题意 LOJ #2540. 「PKUWC 2018」随机算法 题解 朴素的就是 \(O(n3^n)\) dp 写了一下有 \(50pts\) ... 大概就是每个点有三个状态 , 考虑了但不在独立集中 ...
- HDU 1203 I NEED A OFFER (01背包&&概率dp)
M - I NEED A OFFER! Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- 2018.09.01 09:22 Exodus
Be careful when writing in the blog garden. Sometimes you accidentally write something wrong, and yo ...
- 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 ...
随机推荐
- Mysql 索引优化 - 2
永远小表驱动大表(小数据驱动大数据) in exists区别, SELECT * FROM A WHERE A.id in (SELECT id FORM B) 若A表数据大于B表数据用in SELE ...
- linux控制台批量杀进程
-| cd /app/tomcat8/bin/ ./startup.sh
- 5 Python3 函数进阶&迭代器与生成器
1.函数进阶 1.1.名称空间 又名name space, 顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的 ...
- 转载:MySQL和Redis 数据同步解决方案整理
from: http://blog.csdn.net/langzi7758521/article/details/52611910 最近在做一个Redis箱格信息数据同步到数据库Mysql的功能. 自 ...
- linux查看网卡驱动
[root@hudson ~]# yum install ethtool -y [root@hudson ~]# ethtool -i em1driver: bnx2version: 2.2.3fir ...
- 关于HTTP协议及SOCKET通信
一.HTTP 1.报文结构 HTTP:超文本传输协议,报文分为请求报文和响应报文. 2.端口(tomcat端口) http在熟知的80端口使用TCP的服务:tomcat的默认端口是8080 3.状态码 ...
- webpack项目在开发环境中使用静态css文件
webpack项目在开发环境中使用静态css文件 在webpack项目(本人使用的 vue-cli-webpack )中,需要引入 css 或 scss等样式文件时,本人目前知道的,通常有以下几种方法 ...
- 用js来实现银行家算法
Number.prototype.round = function (len) { var old = this; var a1 = Math.pow(10, len) * old; a1 = Mat ...
- Extending Conductor
后端 导体提供了可插拔的后端.目前的实现使用Dynomite. 每个后端需要实现4个接口: //Store for workflow and task definitions com.netflix. ...
- win10关闭后台应用程序进程的方法
一)win10系统后台应用有两大特点: 1.win10系统有许多系统自带应用软件,在系统任务栏中看不到任何自带的应用程序运行 2.但通过任务管理器的进程中,可直观的看到许多非系统进程正在运行. 二)后 ...