CF16E Fish(状压+期望dp)
[传送门[(https://www.luogu.org/problemnew/show/CF16E)
解题思路
比较简单的状压+期望。设\(f[S]\)表示\(S\)这个状态的期望,转移时挑两条活着的鱼打架。时间复杂度\(O(2^n*n^2)\)。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAXN = 19;
double a[MAXN][MAXN],f[1<<MAXN],ans[MAXN];
int n;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) scanf("%lf",&a[i][j]);
f[(1<<n)-1]=1.0;int now;
for(int S=(1<<n)-1;S;S--)if(f[S]){
now=__builtin_popcount(S);
if(now==1){
for(int i=1;i<=n;i++) if((1<<(i-1))&S){
ans[i]=f[S];break;
}
continue;
}
for(int i=1;i<=n;i++)if((1<<(i-1))&S)
for(int j=i+1;j<=n;j++)if((1<<(j-1))&S){
f[S^(1<<(j-1))]+=f[S]*a[i][j]/(now*(now-1)/2);
f[S^(1<<(i-1))]+=f[S]*a[j][i]/(now*(now-1)/2);
}
}
for(int i=1;i<=n;i++) printf("%.6lf ",ans[i]);
return 0;
}
CF16E Fish(状压+期望dp)的更多相关文章
- 【BZOJ3925】[ZJOI2015] 地震后的幻想乡(状压期望DP)
点此看题面 大致题意: 有\(n\)个点和\(m\)条边,每条边的权值是一个\(0\sim1\)的随机实数,要你用\(n-1\)条边将图联通,问这\(n-1\)条边中边权最大值的期望最小值. 提示 这 ...
- uva11600 状压期望dp
一般的期望dp是, dp[i] = dp[j] * p[j] + 1; 即走到下一步需要1的时间,然后加上 下一步走到目标的期望*这一步走到下一步的概率 这一题,我们将联通分块缩为一个点,因为联通块都 ...
- bzoj 1076 奖励关 状压+期望dp
因为每次选择都是有后效性的,直接dp肯定不行,所以需要逆推. f[i][j]表示从第i次开始,初始状态为j的期望收益 #include<cstdio> #include<cstrin ...
- BZOJ 1076 奖励关(状压期望DP)
当前得分期望=(上一轮得分期望+这一轮得分)/m dp[i,j]:第i轮拿的物品方案为j的最优得分期望 如果我们正着去做,会出现从不合法状态(比如前i个根本无法达到j这种方案),所以从后向前推 如果当 ...
- HDU 4336 Card Collector:状压 + 期望dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意: 有n种卡片(n <= 20). 对于每一包方便面,里面有卡片i的概率为p[i],可 ...
- HDU 4336 Card Collector(状压 + 概率DP 期望)题解
题意:每包干脆面可能开出卡或者什么都没有,一共n种卡,每种卡每包爆率pi,问收齐n种卡的期望 思路:期望求解公式为:$E(x) = \sum_{i=1}^{k}pi * xi + (1 - \sum_ ...
- 【10.26校内测试】【状压?DP】【最小生成树?搜索?】
Solution 据说正解DP30行??? 然后写了100行的状压DP?? 疯狂特判,一算极限时间复杂度过不了aaa!! 然而还是过了....QAQ 所以我定的状态是待转移的位置的前三位,用6位二进制 ...
- HDU - 4804 Campus Design(状压+轮廓线dp)
Campus Design Nanjing University of Science and Technology is celebrating its 60th anniversary. In o ...
- $POJ2411\ Mondriaan's\ Dream$ 状压+轮廓线$dp$
传送门 Sol 首先状压大概是很容易想到的 一般的做法大概就是枚举每种状态然后判断转移 但是这里其实可以轮廓线dp 也就是从上到下,从左到右地放方块 假设我们现在已经放到了$(i,j)$这个位置 那么 ...
随机推荐
- php重定向说明
302 临时重定向 header("location:http://api.com/headline?" . http_build_query($_REQUEST)); 301 ...
- Boost Download
{ //https://www.boost.org/users/history/version_1_71_0.html }
- Ubuntu下终端命令安装sublime
Ubuntu下终端命令安装sublime出现软件包无法定位 sublime-text-install 且多次换源不成功 建议采用离线安装 安装教程如下 用Ubuntu上的浏览器下载一个 Sublime ...
- 【dart学习】-- dart 安装开发环境
前言 说明下:本人只有window和mac,所以安装实践只有这两种,其他的自行尝试.简介:Dart是谷歌开发的计算机编程语言,后来被Ecma (ECMA-408)认定为标准 [1] .它被用于web. ...
- JVM典型配置和调优举例
1. 堆设置-Xms: :初始堆大小.-Xmx: :最大堆大小.-XX:NewSize=n: :设置年轻代大小.-XX:NewRatio=n: : :设置年轻代和年老代的比值.如:为 3,表示年轻代与 ...
- AcWing ST算法(区间求最值)打卡
一,介绍 ST算法是一个用倍增来求区间最值的算法,倍增是一个与二分类似的思想的一个东西,倍增简而言之也就是区间长度按1,2,4,8..... 我们先用nlog(n)的复杂度打出一个最大值表,后面我们可 ...
- 【前端技术】一篇文章搞掂:JS
待补充 //以下等价 if(val) if(val!=null&&val!=undefined&&val!="") //以下等价 if(!val) ...
- GitHub 万星推荐:黑客成长技术清单
GitHub 万星推荐:黑客成长技术清单 导语:如果你需要一些安全入门引导,“Awesome Hacking”无疑是最佳选择之一. 最近两天,在reddit安全板块和Twitter上有个GitHub项 ...
- TCP状态转换图解析
本文参考Unix网络编程卷1,对TCP状态转换进行总结,方便掌握TCP链接中各个状态及故障分析. 1.Linux下TCP相关工具 基于Linux系统查看网络状态,首先了解几个基本查看指令. Linux ...
- Linux 线程Demo
#include <stdio.h> #include <pthread.h> struct char_print_params { char character; int c ...