2982: 奔跑吧,小明!

时间限制: 1 Sec  内存限制: 128 MB

提交: 36  解决: 2

题目描述

小明陷入一个充满陷阱的密道之中,现在他要逃脱这里!到达密道的出口即可离开这处绝境!

现在给你小明出现在密道中的位置,还有出口的位置。而密道中每一个位置都有陷阱或者血瓶。遇到陷阱会减少生命值,遇到血瓶会增加你的生命值(包含出口)。每一个陷阱或者血瓶减少或着增加的生命值都是不确定的。

小明一次可以走一步或者两步或者三步。

另外小明还有一个神奇的技能,他可以瞬间跳过N个位置!

这个天赋技能的内容具体是这样的:小明可以从当前位置的标号处,跳到这个标号的两倍位置。例如当前位置标号为i,那么他可以一下子跳到2i处。但是这个技能有个特点,他将收到双倍伤害/生命。

例如i位置是陷阱,会对他造成10点伤害,那么小明施展这个技能跳到2i位置时,将受到20点伤害。反之,如果是血瓶,他将增加20点生命。

这条密道既充满着危险,也到处是机遇,小明想要在走出密道时收获最强大的生命力量!那么机智的你能否预算出小明能收获的最大的生命值呢?

前路充满风险和希望,奔跑吧,小明!

输入

数据有T组测试数据。

每组测试数据开始输入一个整数n,后面有n个整数(存在正负数)。正数表示血瓶,数值表示增加的生命值;负数表示陷阱,数值表示收到的伤害。

接下来输入一个整数q,表示q组询问。

每组询问由两个整数st和ed组成,分别代表初始位置和出口位置。

输出

每组询问输出一个数值,表示离开出口时小明能收获的最大生命值。

注意初始位置和出口位置造成的伤害或增加的生命值也要算进去。

样例输入

1
3
1 -2 3
1
1 3

样例输出

4

提示

样例解释:



密道长度为3。



分别是1,-2,3,即:



位置:    1  2     3



物品:血瓶(+1),陷阱(-2),血瓶(+3)。



小明出生在1位置,这时候他有4种选择,走一步,两步,三步,跳过去。



那么很显然,他可以绕过陷阱,直接走两步到达出口,即位置3。



此时可以收获4个生命力量,即最大生命值。

总是望着曾经的空间发呆,那些说好不分开的朋友不在了,转身,陌路。 熟悉的,安静了, 安静的,离开了, 离开的,陌生了, 陌生的,消失了, 消失的,陌路了。

#include <stdio.h>
int a[1005],ed,ab;
void jisuan(int st,int s)
{
if(st==ed)ab=ab<s?s:ab;
else if(st<ed)
{
for(int j=0; j<4; 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]);
else if(j==3)jisuan(st*2,s+a[st]+a[st*2]);
}
}
}
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--)
{
ab=-1005;
int st;
scanf("%d%d",&st,&ed);
jisuan(st,a[st]);
printf("%d\n",ab);
}
}
return 0;
}

YTU 2982: 奔跑吧,小明!的更多相关文章

  1. YTU 2983: 小明的生机!

    2983: 小明的生机! 时间限制: 1 Sec  内存限制: 128 MB 提交: 16  解决: 2 题目描述 小明陷入一个充满陷阱的密道之中,现在他要逃脱这里!到达密道的指定位置即可离开这处绝境 ...

  2. 小明的密码-初级DP解法

    #include #include #include using namespace std; int visited[5][20][9009];// 访问情况 int dp[5][20][9009] ...

  3. 小明系列问题――小明序列(LIS)

    小明系列问题――小明序列 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit ...

  4. ACM 擅长排列的小明

    擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想 ...

  5. ACM 懒省事的小明

    懒省事的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述       小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ...

  6. 管闲事的小明-nyoj51

    描述某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L,都种有一棵 ...

  7. HDU2096 小明A+B

    入门级都没到的水题!看到顺便就做了,AC记录喜+1 Description 小明今年3岁了, 现在他已经能够认识100以内的非负整数, 并且能够进行100以内的非负整数的加法计算. 对于大于等于100 ...

  8. 小明A+B[HDU2096]

    小明A+B Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  9. nyist 676 小明的求助

    http://acm.nyist.net/JudgeOnline/problem.php?pid=676 小明的求助 时间限制:2000 ms  |  内存限制:65535 KB 难度:2   描述 ...

随机推荐

  1. pdfjs viewer 开发小结

    此文已由作者吴家联授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1. pdfjs库简介 PDF.js 是由Mozilla 主导推出的可以将PDF文件转换为H5页面进行展示的 ...

  2. zoj 2857 Image Transformation

    Image Transformation Time Limit: 2 Seconds      Memory Limit: 65536 KB The image stored on a compute ...

  3. 74. Spring Data JPA方法定义规范【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] 事情的起因:有人问过我们这个这个问题:为什么我利用Spring data jpa写的方法没有按照我想要的情况进行执行呢?我记得当时只是告诉他你你先 ...

  4. POJ 2195 Going Home【最小费用流 二分图最优匹配】

    题目大意:一个n*m的地图,上面有一些人man(m)和数量相等的house(H) 图上的距离为曼哈顿距离 问所有人住进一所房子(当然一个人住一间咯)距离之和最短是多少? 思路:一个人一间房,明显是二分 ...

  5. 【贪心+博弈】C. Naming Company

    http://codeforces.com/contest/794/problem/C 题意:A,B两人各有长度为n的字符串,轮流向空字符串C中放字母,A尽可能让字符串字典序小,B尽可能让字符串字典序 ...

  6. Sencha Touch 2 实现跨域访问

    最近要做手机移动App,最后采用HTMML5来做框架用Sencha Touch,在数据交互时遇到了Ajax跨域访问,在Sencha Touch 2中,实现跨域访问可以使用Ext类库提供给我们的类Ext ...

  7. 矩形周长(codevs 2149)

    题目描述 Description N(N<5000) 张矩形的海报,照片和其他同样形状的图片贴在墙上.它们的边都是垂直的或水平的.每个矩形可以部分或者全部覆盖其他矩形.所有的矩形组成的集合的轮廓 ...

  8. 2016 Multi-University Training Contest 9 solutions BY 金策工业综合大学

    A Poor King Tag: Reversed BFS Preprocessing is needed to calculate answers for all positions (states ...

  9. hdu 1429 bfs+二进制状态压缩

    开始时候只用了BFS,显然超时啊,必然在结构体里加一个数组什么的判重啊,开始用的一个BOOL数组,显然还是不行,复杂度高,每次都要遍历数组来判重:后百度之,学习了二进制状态压缩,其实就用一个二进制数来 ...

  10. Linux中的进程与线程

    介绍了Linux下fork()创建进程以及使用pthread_create()创建线程的方法 1. 基于进程的斐波那契数列 在下面的代码中,由子进程进行斐波那契数列的输出,父进程要等待子进程输出完毕, ...