zoj 3640 Help Me Escape(概率dp[记忆搜索])
来源:互联网 发布:java变量重新赋值 编辑:程序博客网 时间:2024/05/16 06:37
题意:
一个人,想走出一个困境,每次他都可以从n条路中选择一条路,每条路选择的概率是一样的,并且每次的n条路都一样,每条路都有一个值c[i],当且仅当这个人的力量大于c[i]时才能选择这条路。
那么问题来了:求这个人逃出困境的期望。
题解:
状态:dp[v] = sum{ ti/n }, v > c[i]dp[v] = sum{ (dp[v+c[i]] + 1)/n }, v<=c[i]
观察容易发现,用记忆搜索比较好写。
#include<iostream>#include<math.h>#include<stdio.h>#include<algorithm>#include<string.h>#include<vector>using namespace std;//typedef __int64 lld;#define oo 0x3f3f3f3f#define Mod 1000000007#define maxn 200005#define maxm 105#define Exp 1e-9double dp[maxn];int c[maxm];int n,f;int ti(int C){ return (1.0+sqrt(5.0))/2.0*C*C;}double Dp(int v){ if(dp[v]>0.0) return dp[v]; dp[v]=0.0; for(int i=1;i<=n;i++) { if(v>c[i]) dp[v]+=1.0*ti(c[i])/n; else dp[v]+=(Dp(v+c[i])+1.0)/n; } return dp[v];}int main(){ while(scanf("%d %d",&n,&f)!=EOF) { memset(dp,0,sizeof dp); for(int i=1;i<=n;i++) scanf("%d",&c[i]); printf("%.3lf\n",Dp(f)); } return 0;}
0 0
- zoj 3640 Help Me Escape(概率dp[记忆搜索])
- ZOJ 3640 Help Me Escape(概率dp+记忆化)
- zoj 3640 Help Me Escape 概率dp+dfs记忆化
- ZOJ 3640 Help Me Escape 概率DP 记忆化DFS
- ZOJ 3640 Help Me Escape 概率DP
- 概率dp ZOJ 3640 Help Me Escape
- zoj 3640 Help Me Escape(概率dp)
- ZOJ 3640 Help Me Escape(概率dp)
- zoj-3640-Help Me Escape-概率DP
- ZOJ - 3640 Help Me Escape(概率dp)
- ZOJ 3640 Help Me Escape 概率dp
- ZOJ 3640 Help Me Escape (概率DP)
- zoj 3640 Help Me Escape(概率DP)
- ZOJ 3640 Help Me Escape [概率DP]
- zoj 3640 Help Me Escape(概率DP)
- zoj 3640 Help Me Escape (概率dp)
- zoj 3640 Help Me Escape(概率DP基础)
- ZOJ-3640 Help Me Escape (概率DP)
- 网上交易的守护者-数字签名
- hdu1166 敌兵布阵(线段树点更新模板题)
- File类的使用
- maven使用tomcat插件改变应用端口
- ExtJS event
- zoj 3640 Help Me Escape(概率dp[记忆搜索])
- HDU1874 畅通工程续【Dijkstra】
- Java嵌入式数据库:MapDB
- uva11020 Efficient Solutions mutiset
- C语言数组
- VC求一组数的最大值最小值总和以及平均值
- Myeclipse 使用最新Spring....或其他框架方法
- R语言学习(三)
- ios开发,6种手势的创建方法