【XSY1596】旅行 期望DP
题目大意
有\(m\)个游客, 他们都依次访问城市\(1,2,3,\ldots,n\), 第\(i\)个游客到达任意一个城市后有\(p_i\)的概率会停下, 不再继续前行
设\(c_i\)个乘客经过了城市\(i\),则第\(i\)个人经过第\(j\)个城市时的快乐值是\(\frac{c_j+1}{c_{j-1}}h_{i,j}\)
求每个人的快乐值之和的期望
\(m,n\leq16\)
题解
枚举城市\(x\)和经过当前城市的人的状态\(s\)
设当前状态的人数为\(cnt\),出现概率为\(ps\),所有经过当前城市的人的\(p_i\)的和为\(pn\)
枚举每个人\(i\),\(i\)在\(x+1\)城市对答案的贡献是
\]
即
\]
时间复杂度:\(O(nm2^m)\)
代码
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<ctime>
#include<utility>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
double p[20];
double f[20][20];
double h[20][20];
int main()
{
//	freopen("b.in","r",stdin);
	int n,m;
	scanf("%d%d",&m,&n);
	int i;
	for(i=1;i<=m;i++)
		scanf("%lf",&p[i]);
	int j;
	for(i=1;i<=m;i++)
	{
		f[i][1]=1;
		for(j=2;j<=n;j++)
			f[i][j]=f[i][j-1]*p[i];
	}
	double ans=0;
	for(i=1;i<=m;i++)
		for(j=1;j<=n;j++)
		{
			scanf("%lf",&h[i][j]);
			ans+=f[i][j]*h[i][j];
		}
	int s;
	for(i=1;i<=n-1;i++)
		for(s=1;s<(1<<m);s++)
		{
			double ps=1,sum=0,pn=0;
			int cnt=0;
			for(j=1;j<=m;j++)
				if(s&(1<<(j-1)))
				{
					ps*=f[j][i];
					cnt++;
					pn+=p[j];
				}
				else
					ps*=1-f[j][i];
			for(j=1;j<=m;j++)
				if(s&(1<<(j-1)))
					sum+=p[j]*h[j][i+1]*(pn-p[j]+1);
			ans+=ps*sum/cnt;
		}
	printf("%.10lf\n",ans);
	return 0;
}
【XSY1596】旅行 期望DP的更多相关文章
- 【BZOJ-1419】Red is good     概率期望DP
		1419: Red is good Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 660 Solved: 257[Submit][Status][Di ... 
- [NOIP2016]换教室 D1 T3 Floyed+期望DP
		[NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ... 
- HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)
		题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ... 
- 【BZOJ-4008】亚瑟王      概率与期望 + DP
		4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 832 Solved: 5 ... 
- 期望dp BZOJ3450+BZOJ4318
		BZOJ3450 概率期望DP f[i]表示到i的期望得分,g[i]表示到i的期望长度. 分三种情况转移: ① s[i]=‘x’:f[i]=f[i-1],g[i]=0 ② s[i]=‘o’:f[i]= ... 
- HDU 4405 期望DP
		期望DP算是第一题吧...虽然巨水但把思路理理清楚总是好的.. 题意:在一个1×n的格子上掷色子,从0点出发,掷了多少前进几步,同时有些格点直接相连,即若a,b相连,当落到a点时直接飞向b点.求走到n ... 
- POJ 2096 【期望DP】
		题意: 有n种选择,每种选择对应m种状态.每种选择发生的概率相等,每种选择中对应的每种状态发生的概率相等. 求n种选择和m种状态中每种至少发生一次的期望. 期望DP好别扭啊.要用倒推的方法. dp[i ... 
- ZOJ 3822 Domination 期望dp
		Domination Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showProblem ... 
- poj 2096 Collecting Bugs(期望 dp 概率 推导 分类讨论)
		Description Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other ... 
随机推荐
- Eclipse新建Maven工程——git篇
			1.eclipse,新建一个maven工程,步骤如下图: 右键新建的工程 发布前后工程对比如下: 2.发布为本地仓库 因为项目中,不是所有的文件,都需要提交到githut上,所以需要把不需要提交的问题 ... 
- Leetcode 665. Non-decreasing Array(Easy)
			Given an array with n integers, your task is to check if it could become non-decreasing by modifying ... 
- 18-vue-cli脚手架项目中组件的使用
			在webpack-simple模板中,包括webpck模板.一个.vue文件就是一个组件. 为什么会这样呢?因为webpack干活了!webpack的将我们所有的资源文件进行打包.同时webpack还 ... 
- Linux之常用软件-服务
			在使用Linux系统的时候,经常要使用一些功能,但是并不是系统自带的一些功能,这个时候就需要我们进行扩展安装一些软件. 1)telnet 检测telnet-server的rpm包是否安装 [root ... 
- javascript中的 return false和return true
			关于javascript中的 return false和return true,return 是javascript里函数返回值的关键字,一个函数内处理的结果可以使用return 返回,这样在调用函数 ... 
- [转帖]Linux 下如何知道是否有人在使坏?
			Linux 下如何知道是否有人在使坏? 学到了两个最简单的命令 usermod -L username 锁定账户 passwd -s username 查看用户状态. 自己linux 知道的还是少 需 ... 
- [转帖]xargs命令详解,xargs与管道的区别
			xargs命令详解,xargs与管道的区别 https://www.cnblogs.com/wangqiguo/p/6464234.html 之前一直说要学习一下 xargs 到现在为止也没学习.. ... 
- windows浏览器访问虚拟机开的rabbitmq服务,无法访问
			根据这个博主的建议 https://blog.csdn.net/csdnliuxin123524/article/details/78207427 换了一个浏览器上火狐浏览器输入“localhost: ... 
- Json dump
			json 模块提供了一种很简单的方式来编码和解码JSON数据. 其中两个主要的函数是 json.dumps() 和 json.loads() , 要比其他序列化函数库如pickle的接口少得多. 下面 ... 
- 随机森林(Random Forest)
			阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 袋外错误率(oob error) 6 随机森林工作原理解释的一个简单例子 7 随机森林的Pyth ... 
