博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ 3640 Help Me Escape
阅读量:6581 次
发布时间:2019-06-24

本文共 1153 字,大约阅读时间需要 3 分钟。

题意:一个人在迷宫里面,这个人有f的攻击力。他一共有n条通道可供随机选择,每次等概率随机选择一条。对每条通道i有参数c[i]。选择通道k后,若f > c[k],则花费时间t[k]逃出迷宫,否则花费一天,攻击力f增加c[k],且一天之后继续选择通道。求逃出去所花费的天数的期望。其中t[k] = (int)((1+√5) * c[k]*c[k] / 2)。

解法:概率DP加记忆化写法。设d[i]表示当攻击力为i逃出去所花费的天数的期望,遍历每个通道j,若i > c[j]则d[i] += t[j] / n,否则d[i] += (1 + d[i+c[j]]) / n。

tag:概率DP,记忆化

1 /* 2  * Author:  Plumrain 3  * Created Time:  2013-11-16 19:38 4  * File Name: DP-ZOJ-3640.cpp 5  */ 6 #include 
7 #include
8 #include
9 #include
10 11 using namespace std;12 13 int n, f;14 int c[10005];15 double x;16 17 double DP(int f)18 {19 double ret = 0.0;20 for (int i = 1; i <= n; ++ i){21 if (f > c[i]) ret += (int)(x * c[i] * c[i]);22 else ret += 1 + DP(f+c[i]);23 }24 ret /= (double)n;25 return ret;26 }27 28 int main()29 {30 x = (1 + sqrt(5)) / (double)2;31 while (scanf ("%d%d", &n, &f) != EOF && n){32 for (int i = 1; i <= n; ++ i)33 scanf ("%d", &c[i]);34 printf ("%.3f\n", DP(f));35 }36 return 0;37 }
View Code

 

转载于:https://www.cnblogs.com/plumrain/p/ZOJ_3640.html

你可能感兴趣的文章
Spket Eclipse插件使用教程
查看>>
大端和小端(高位和低位)
查看>>
Android医药助手源码
查看>>
IPv6隧道及NAT-PT技术讲解
查看>>
解决SwipeRefreshLayout结合ListView EmptyView使用不起作用的问题
查看>>
Linux基础4 常用命令
查看>>
锚标记平滑移动
查看>>
我的友情链接
查看>>
Endian firewall
查看>>
js判断离开页面刷新或关闭的方法
查看>>
AWS AURORA  CPU 100% 的解决方案
查看>>
第94课:SparkStreaming 实现广告计费系统中在线黑名单过滤实战
查看>>
CISCO HSRP
查看>>
linux用户和组
查看>>
人生历程
查看>>
sql语句 (根据网络资料整理)
查看>>
gnome topIcons
查看>>
Visual Studio 2010生成dll并使用
查看>>
生物医药领域科技成果专场圆满落幕
查看>>
C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)
查看>>