YTU 2983: 小明的生机!
2983: 小明的生机!
时间限制: 1 Sec 内存限制: 128 MB
提交: 16 解决: 2
题目描述
小明陷入一个充满陷阱的密道之中,现在他要逃脱这里!到达密道的指定位置即可离开这处绝境!
现在给你小明出现在密道中的位置,还有出口的位置。
而密道中每一个位置都有陷阱或者血瓶。遇到陷阱会减少生命值,遇到血瓶会增加你的生命值(包含出口)。每一个陷阱或者血瓶减少或着增加的生命值都是不确定的。
小明一次可以向前走一步或者两步或者三步。
小明开始的时候生命力量为0,如果走出密道时的生命力量大于等于0,小明便生存成功。反之,小明便没有逃出这个危险的密道。
而你是一名先知,你需要做的便是指点小明的迷津,预测出小明生存成功的几率。
输入
数据有T组测试数据。
每组测试数据开始输入一个整数n,后面有n个整数(存在正负数)。正数表示血瓶,数值表示增加的生命值;负数表示陷阱,数值表示收到的伤害。
接下来输入一个整数q,表示q组询问。
每组询问由两个整数st和ed组成(st<=ed),分别代表初始位置和出口位置。
输出
每组询问输出一个双精度浮点数,表示小明生存成功的几率(带百分号)。
结果保留小数点后两位,并四舍五入。
注意初始位置和出口位置造成的伤害或增加的生命值也要算进去。
样例输入
1
3
1 -5 3
1
1 3
样例输出
50.00%
提示
样例解释:
密道长度为3。
分别是1,-5,3,即:
位置: 1 2 3
物品:血瓶(+1),陷阱(-5),血瓶(+3)。
小明出生在1位置,他需要走到3位置。
这时候有两种走法:
【1】每次走一步,走两次到达出口,最后生命值为-1,生存失败。
【2】直接走两步到出口,最后生命值为4,生存成功。
总共有两种走法,生存成功一次,生存几率为50.00%。
恭喜你,预测成功。

#include <stdio.h>
int a[1005],ed;
double se,zo;
void jisuan(int st,int s)
{
if(st==ed)
{
zo++;
if(s>=0)se++;
}
else if(st<ed)
{
for(int j=0; j<3; j++)
{
if(j==0)jisuan(st+1,s+a[st+1]);
else if(j==1)jisuan(st+2,s+a[st+2]);
else if(j==2)jisuan(st+3,s+a[st+3]);
}
}
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int m,q;
scanf("%d",&m);
for(int i=1; i<=m; i++)
scanf("%d",a+i);
scanf("%d",&q);
while(q--)
{
se=0,zo=0;
int st;
scanf("%d%d",&st,&ed);
jisuan(st,a[st]);
printf("%.2lf%%\n",se/zo*100);
}
}
return 0;
}
YTU 2983: 小明的生机!的更多相关文章
- YTU 2982: 奔跑吧,小明!
2982: 奔跑吧,小明! 时间限制: 1 Sec 内存限制: 128 MB 提交: 36 解决: 2 题目描述 小明陷入一个充满陷阱的密道之中,现在他要逃脱这里!到达密道的出口即可离开这处绝境! ...
- 小明的密码-初级DP解法
#include #include #include using namespace std; int visited[5][20][9009];// 访问情况 int dp[5][20][9009] ...
- 小明系列问题――小明序列(LIS)
小明系列问题――小明序列 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- ACM 擅长排列的小明
擅长排列的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想 ...
- ACM 懒省事的小明
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ...
- 管闲事的小明-nyoj51
描述某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L,都种有一棵 ...
- HDU2096 小明A+B
入门级都没到的水题!看到顺便就做了,AC记录喜+1 Description 小明今年3岁了, 现在他已经能够认识100以内的非负整数, 并且能够进行100以内的非负整数的加法计算. 对于大于等于100 ...
- 小明A+B[HDU2096]
小明A+B Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- nyist 676 小明的求助
http://acm.nyist.net/JudgeOnline/problem.php?pid=676 小明的求助 时间限制:2000 ms | 内存限制:65535 KB 难度:2 描述 ...
随机推荐
- MyBatis 3 学习
MyBatis是一款优秀的持久化框架,支持定制化SQL.存储过程以及高级映射.MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获得结果集.MyBatis可以使用简单的XML或注解来配置和映 ...
- react 语法细节总结说明
1.当要获取某个数据列表中的某个字段时,用“.”附加的形式.例如:获取user中的balance字段,用this.props.user.balance 来表示. 2.当要打印某个数据或字段结果时,co ...
- JavaScript 的类型
var a ="111"; console.log(a.constructor);//function String() { [native code]} var b= Strin ...
- 大数据学习——flume日志分类采集汇总
1. 案例场景 A.B两台日志服务机器实时生产日志主要类型为access.log.nginx.log.web.log 现在要求: 把A.B 机器中的access.log.nginx.log.web.l ...
- 银河英雄传说(codevs 1540)
题目描述 Description 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米 ...
- CF830B:Cards Sorting
对叠放着的n张牌,第i张牌写有数字Ai,进行操作:将牌堆顶的牌取出,若是当前牌堆最小值就扔掉,否则放到牌堆底,求牌堆空时操作次数. 怎么看怎么像约瑟夫..不过约瑟夫DP我不太熟,于是就yy了一下 “当 ...
- BZOJ1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
n<=100000个数表示每头牛在K<=30种物品的选取情况,该数在二进制下某位为0表示不选1表示选,求一个最大的区间使区间内选择每种物品的牛一样多. 数学转化,把不同状态间单变量的关系通 ...
- hihoCoder #1067 : 最近公共祖先·二 [ 离线LCA tarjan ]
传送门: #1067 : 最近公共祖先·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上上回说到,小Hi和小Ho用非常拙劣——或者说粗糙的手段山寨出了一个神奇的网站 ...
- list如何remove
http://blog.sina.com.cn/s/blog_621b6f0e0100s5n5.html 在java中对list进行操作很频繁,特别是进行list启遍历,这些操作我们都会,也很熟悉,但 ...
- Pick-up sticks--poj2653(判断两线段是否相交)
http://poj.org/problem?id=2653 题目大意:有n根各种长度的棍 一同洒在地上 求在最上面的棍子有那几个 分析: 我刚开始想倒着遍历 因为n是100000 想着会 ...