题目大意:

有n条路,选每条路的概率相等,初始能力值为f,每条路通过的难度值为ci,当能力值大于某条路A的难度值b时,能够成功逃离,花费时间ti,小于等于时,不能逃离,天数加一天,但能力值增加b.

给定初始的能力值,求成功逃离的期望。

分析:

概率dp做的少,感觉不是很简单。

设dp[j]表示能力值为j时,逃离的期望值。

对于每条路i,当j>c[i]时,成功逃离+(ti[i]*p),否则加(+1+dp[j+c[j]])*p;

从后往前递推,求出dp[f]。

精度卡的好严,看看下面2个代码就行了

WA的代码

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cmath>
  4. #include<algorithm>
  5. #include<iostream>
  6. #define INF 10000000
  7. using namespace std;
  8. int main()
  9. {
  10. int n,f;
  11. double dp[];
  12. int c[],t[];
  13. while(scanf("%d %d",&n,&f)!=EOF)
  14. {
  15. int sum=,Max=-INF;
  16. for(int i=; i<n; i++)
  17. {
  18. scanf("%d",&c[i]);
  19. Max=max(Max,c[i]);
  20. int tt=(int)((1.0+sqrt(5.0))/2.0*c[i]*c[i]);
  21. t[i]=tt;
  22. sum+=t[i];
  23. }
  24. double p=1.0/n;
  25. for(int i=Max+; i<=*Max; i++)
  26. dp[i]=(double)sum*p;
  27. for(int j=Max; j>=f; j--)
  28. {
  29. double tem=0.0;
  30. for(int i=; i<n; i++)
  31. {
  32. if(c[i]<j)
  33. tem+=t[i]*p;
  34. else
  35. tem+=(+dp[j+c[i]])*p;
  36. }
  37. dp[j]=tem;
  38. }
  39. printf("%.3lf\n",dp[f]);
  40. }
  41. return ;
  42. }

AC 代码

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cmath>
  4. #include<algorithm>
  5. #include<iostream>
  6. #define INF 10000000
  7. using namespace std;
  8. int main()
  9. {
  10. int n,f;
  11. double dp[];
  12. int c[],t[];
  13. while(scanf("%d %d",&n,&f)!=EOF)
  14. {
  15. double sum=;
  16. int Max=-INF;
  17. for(int i=;i<n;i++)
  18. {
  19. scanf("%d",&c[i]);
  20. Max=max(Max,c[i]);
  21. int tt=(int)((1.0+sqrt(5.0))/2.0*c[i]*c[i]);
  22. t[i]=tt;
  23. sum+=t[i];
  24. }
  25. double p=1.0/n;
  26. for(int i=Max+;i<=*Max;i++)
  27. dp[i]=sum*p;
  28. for(int j=Max;j>=f;j--)
  29. {
  30. double tem=0.0;
  31. for(int i=;i<n;i++)
  32. {
  33. if(c[i]<j)
  34. tem+=t[i]*p;
  35. else
  36. tem+=(+dp[j+c[i]])*p;
  37. }
  38. dp[j]=tem;
  39. }
  40. printf("%.3lf\n",dp[f]);
  41. }
  42. return ;
  43. }

ZOJ Problem Set - 3640 Help Me Escape的更多相关文章

  1. ZOJ Problem Set - 1394 Polar Explorer

    这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...

  2. ZOJ Problem Set - 1025解题报告

    ZOJ Problem Set - 1025 题目分类:基础题 原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=10 ...

  3. ZOJ Problem Set - 3829Known Notation(贪心)

    ZOJ Problem Set - 3829Known Notation(贪心) 题目链接 题目大意:给你一个后缀表达式(仅仅有数字和符号),可是这个后缀表达式的空格不幸丢失,如今给你一个这种后缀表达 ...

  4. ZOJ Problem Set - 2563 Long Dominoes 【如压力dp】

    称号:ZOJ Problem Set - 2563 Long Dominoes 题意:给出1*3的小矩形.求覆盖m*n的矩阵的最多的不同的方法数? 分析:有一道题目是1 * 2的.比較火.链接:这里 ...

  5. ZOJ Problem Set - 3593 拓展欧几里得 数学

    ZOJ Problem Set - 3593 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3593 One Person ...

  6. ZOJ Problem Set - 2297 Survival 【状压dp】

    题目:ZOJ Problem Set - 2297 Survival 题意:给出一些怪,有两个值,打他花费的血和能够添加的血,然后有一个boss,必须把小怪全部都打死之后才干打boss,血量小于0会死 ...

  7. ZOJ Problem Set - 3820 Building Fire Stations 【树的直径 + 操作 】

    题目:problemId=5374" target="_blank">ZOJ Problem Set - 3820 Building Fire Stations 题 ...

  8. ZOJ Problem Set - 3229 Shoot the Bullet 【有上下界网络流+流量输出】

    题目:problemId=3442" target="_blank">ZOJ Problem Set - 3229 Shoot the Bullet 分类:有源有汇 ...

  9. ZOJ Problem Set - 3822Domination(DP)

    ZOJ Problem Set - 3822Domination(DP) problemCode=3822">题目链接 题目大意: 给你一个n * m的棋盘,每天都在棋盘上面放一颗棋子 ...

随机推荐

  1. mysqldump使用语法

    复制代码 代码如下: mysqldump -u user -p db tab1 tab2 > db.sql   恢复 复制代码 代码如下: mysql -u user -p db < db ...

  2. c++自己困惑之处

    1 typedef 可以把类型名重命名. 例如 typedef int my_i; my_i a; a为整型变量. typedef struct node *tree;       struct no ...

  3. 常州培训 day4 解题报告

    第一题:(简单的模拟题) 给出一个N位二进制数,有‘+’, ‘-’, ‘*’, ‘/’ 操作,分别表示加1,减1,乘2,除以2,给出M个操作,求出M个操作后的二进制数.N,M<=5000000; ...

  4. Pjax的使用

    什么是pjax? 现在很多网站( facebook,  twitter)都支持这样的一种浏览方式, 当你点击一个站内的链接的时候, 不是做页面跳转, 而是只是站内页面刷新. 这样的用户体验, 比起整个 ...

  5. JAVA传智 DAY1复习

    Java平台: Java API JVM 特点:可跨平台 Java运行机制: 编译(javac.exe)                                  运行(java.exe) J ...

  6. 如何对Linux的grub进行加密

    一.加密 设置grub密码: 众所周知,通过编辑GRUB启动参数可以轻松的进入单用户模式从而修改root密码,这对于一台多用户的计算机或服务器来说,无疑增加了安全隐患.大家一定很像为自己的GRUB加一 ...

  7. Core Text概述

    本文是我翻译的苹果官方文档<Core Text Overview> Core Text框架是高级的底层文字布局和处理字体的技术.它在Mac OS X v10.5 and iOS 3.2开始 ...

  8. String性能优化

    String 使用的优化建议 其他 String 使用的优化建议 以上我们描述了在我们的大量文本分析案例中调用 String 的 subString方法导致内存消耗的问题,下面再列举一些其他将导致内存 ...

  9. ACM - KMP题目小结 (更新中)

    KMP算法题型大致有两类,一类是next数组的应用,一类是匹配问题. next数组大多数是求字符串周期,或者是与前缀后缀有关,也可以应用在DP中.需要对next数组有一定理解才能做得出. next数组 ...

  10. Arrays.equals()

    我们知道判断字符串相等使用的是equals方法,那么要是判断两个字符串数组是否相等呢,要是char数组呢,同样的java.util.Arrays类提供了equals()方法,如下是官方API: /** ...