ZOJ Problem Set - 3640 Help Me Escape
题目大意:
有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的代码
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<algorithm>
- #include<iostream>
- #define INF 10000000
- using namespace std;
- int main()
- {
- int n,f;
- double dp[];
- int c[],t[];
- while(scanf("%d %d",&n,&f)!=EOF)
- {
- int sum=,Max=-INF;
- for(int i=; i<n; i++)
- {
- scanf("%d",&c[i]);
- Max=max(Max,c[i]);
- int tt=(int)((1.0+sqrt(5.0))/2.0*c[i]*c[i]);
- t[i]=tt;
- sum+=t[i];
- }
- double p=1.0/n;
- for(int i=Max+; i<=*Max; i++)
- dp[i]=(double)sum*p;
- for(int j=Max; j>=f; j--)
- {
- double tem=0.0;
- for(int i=; i<n; i++)
- {
- if(c[i]<j)
- tem+=t[i]*p;
- else
- tem+=(+dp[j+c[i]])*p;
- }
- dp[j]=tem;
- }
- printf("%.3lf\n",dp[f]);
- }
- return ;
- }
AC 代码
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<algorithm>
- #include<iostream>
- #define INF 10000000
- using namespace std;
- int main()
- {
- int n,f;
- double dp[];
- int c[],t[];
- while(scanf("%d %d",&n,&f)!=EOF)
- {
- double sum=;
- int Max=-INF;
- for(int i=;i<n;i++)
- {
- scanf("%d",&c[i]);
- Max=max(Max,c[i]);
- int tt=(int)((1.0+sqrt(5.0))/2.0*c[i]*c[i]);
- t[i]=tt;
- sum+=t[i];
- }
- double p=1.0/n;
- for(int i=Max+;i<=*Max;i++)
- dp[i]=sum*p;
- for(int j=Max;j>=f;j--)
- {
- double tem=0.0;
- for(int i=;i<n;i++)
- {
- if(c[i]<j)
- tem+=t[i]*p;
- else
- tem+=(+dp[j+c[i]])*p;
- }
- dp[j]=tem;
- }
- printf("%.3lf\n",dp[f]);
- }
- return ;
- }
ZOJ Problem Set - 3640 Help Me Escape的更多相关文章
- ZOJ Problem Set - 1394 Polar Explorer
这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...
- ZOJ Problem Set - 1025解题报告
ZOJ Problem Set - 1025 题目分类:基础题 原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=10 ...
- ZOJ Problem Set - 3829Known Notation(贪心)
ZOJ Problem Set - 3829Known Notation(贪心) 题目链接 题目大意:给你一个后缀表达式(仅仅有数字和符号),可是这个后缀表达式的空格不幸丢失,如今给你一个这种后缀表达 ...
- ZOJ Problem Set - 2563 Long Dominoes 【如压力dp】
称号:ZOJ Problem Set - 2563 Long Dominoes 题意:给出1*3的小矩形.求覆盖m*n的矩阵的最多的不同的方法数? 分析:有一道题目是1 * 2的.比較火.链接:这里 ...
- ZOJ Problem Set - 3593 拓展欧几里得 数学
ZOJ Problem Set - 3593 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3593 One Person ...
- ZOJ Problem Set - 2297 Survival 【状压dp】
题目:ZOJ Problem Set - 2297 Survival 题意:给出一些怪,有两个值,打他花费的血和能够添加的血,然后有一个boss,必须把小怪全部都打死之后才干打boss,血量小于0会死 ...
- ZOJ Problem Set - 3820 Building Fire Stations 【树的直径 + 操作 】
题目:problemId=5374" target="_blank">ZOJ Problem Set - 3820 Building Fire Stations 题 ...
- ZOJ Problem Set - 3229 Shoot the Bullet 【有上下界网络流+流量输出】
题目:problemId=3442" target="_blank">ZOJ Problem Set - 3229 Shoot the Bullet 分类:有源有汇 ...
- ZOJ Problem Set - 3822Domination(DP)
ZOJ Problem Set - 3822Domination(DP) problemCode=3822">题目链接 题目大意: 给你一个n * m的棋盘,每天都在棋盘上面放一颗棋子 ...
随机推荐
- mysqldump使用语法
复制代码 代码如下: mysqldump -u user -p db tab1 tab2 > db.sql 恢复 复制代码 代码如下: mysql -u user -p db < db ...
- c++自己困惑之处
1 typedef 可以把类型名重命名. 例如 typedef int my_i; my_i a; a为整型变量. typedef struct node *tree; struct no ...
- 常州培训 day4 解题报告
第一题:(简单的模拟题) 给出一个N位二进制数,有‘+’, ‘-’, ‘*’, ‘/’ 操作,分别表示加1,减1,乘2,除以2,给出M个操作,求出M个操作后的二进制数.N,M<=5000000; ...
- Pjax的使用
什么是pjax? 现在很多网站( facebook, twitter)都支持这样的一种浏览方式, 当你点击一个站内的链接的时候, 不是做页面跳转, 而是只是站内页面刷新. 这样的用户体验, 比起整个 ...
- JAVA传智 DAY1复习
Java平台: Java API JVM 特点:可跨平台 Java运行机制: 编译(javac.exe) 运行(java.exe) J ...
- 如何对Linux的grub进行加密
一.加密 设置grub密码: 众所周知,通过编辑GRUB启动参数可以轻松的进入单用户模式从而修改root密码,这对于一台多用户的计算机或服务器来说,无疑增加了安全隐患.大家一定很像为自己的GRUB加一 ...
- Core Text概述
本文是我翻译的苹果官方文档<Core Text Overview> Core Text框架是高级的底层文字布局和处理字体的技术.它在Mac OS X v10.5 and iOS 3.2开始 ...
- String性能优化
String 使用的优化建议 其他 String 使用的优化建议 以上我们描述了在我们的大量文本分析案例中调用 String 的 subString方法导致内存消耗的问题,下面再列举一些其他将导致内存 ...
- ACM - KMP题目小结 (更新中)
KMP算法题型大致有两类,一类是next数组的应用,一类是匹配问题. next数组大多数是求字符串周期,或者是与前缀后缀有关,也可以应用在DP中.需要对next数组有一定理解才能做得出. next数组 ...
- Arrays.equals()
我们知道判断字符串相等使用的是equals方法,那么要是判断两个字符串数组是否相等呢,要是char数组呢,同样的java.util.Arrays类提供了equals()方法,如下是官方API: /** ...