蒜头君在玩一款逃生的游戏。在一个 n \times mn×m的矩形地图上,蒜头位于其中一个点。地图上每个格子有加血的药剂,和掉血的火焰,药剂的药效不同,火焰的大小也不同,每个格子上有一个数字,如果格子上的数字是正数说明是一个药剂代表增加的生命值,如果是负数说明是火焰代表失去的生命值。

蒜头初始化有 vv 点血量,他的血量上限是 cc,任何时刻他的生命值都不能大于血量上限,如果血量为 00 则会死亡,不能继续游戏。

矩形地图上的四个角(1, 1)(1,1),(1, m)(1,m),(n, 1)(n,1),(n, m)(n,m)为游戏的出口。游戏中只要选定了一个出口,就必须朝着这个方向走。例如,选择了左下的出口,就只能往左和下两个方向前进,选择了右上的出口,就只能往右和上两个方向前进,左上和右下方向的出口同理。

如果成功逃生,那么剩余生命值越高,则游戏分数越高。为了能拿到最高分,请你帮忙计算如果成功逃生最多能剩余多少血量,如果不能逃生输出 -1−1。

输入格式

第一行依次输入整数 nn,mm,xx,yy,vv,cc(1 < n,m \leq 10001<n,m≤1000,1 \leq x \leq n1≤x≤n,1 \leq y \leq m1≤y≤m,1 \leq v \leq c \leq 100001≤v≤c≤10000), 其中 n, mn,m 代表地图大小,(x, y)(x,y) 代表蒜头君的初始位置,vv 代表蒜头的初始化血量,cc代表蒜头的生命值上限。

接下来 nn 行,每行有 mm 个数字,代表地图信息。(每个数字的绝对值不大于100100,地图中蒜头君的初始位置的值一定为 00)

输出格式

一行输出一个数字,代表成功逃生最多剩余的血量,如果失败输出 -1−1。

样例输入

4 4 3 2 5 10
1 2 3 4
-1 -2 -3 -4
4 0 2 1
-4 -3 -2 -1

样例输出

10
蒜头君在玩一款逃生的游戏。在一个 n \times mn×m 的矩形地图上,蒜头位于其中一个点。地图上每个格子有加血的药剂,和掉血的火焰,药剂的药效不同,火焰的大小也不同,每个格子上有一个数字,如果格子上的数字是正数说明是一个药剂代表增加的生命值,如果是负数说明是火焰代表失去的生命值。

蒜头初始化有 vv 点血量,他的血量上限是 cc,任何时刻他的生命值都不能大于血量上限,如果血量为  则会死亡,不能继续游戏。

矩形地图上的四个角(, )(,),(, m)(,m),(n, )(n,),(n, m)(n,m)为游戏的出口。游戏中只要选定了一个出口,就必须朝着这个方向走。例如,选择了左下的出口,就只能往左和下两个方向前进,选择了右上的出口,就只能往右和上两个方向前进,左上和右下方向的出口同理。

如果成功逃生,那么剩余生命值越高,则游戏分数越高。为了能拿到最高分,请你帮忙计算如果成功逃生最多能剩余多少血量,如果不能逃生输出 -−。

输入格式

第一行依次输入整数 nn,mm,xx,yy,vv,cc( < n,m \leq <n,m≤, \leq x \leq n1≤x≤n, \leq y \leq m1≤y≤m, \leq v \leq c \leq ≤v≤c≤), 其中 n, mn,m 代表地图大小,(x, y)(x,y) 代表蒜头君的初始位置,vv 代表蒜头的初始化血量,cc 代表蒜头的生命值上限。

接下来 nn 行,每行有 mm 个数字,代表地图信息。(每个数字的绝对值不大于100100,地图中蒜头君的初始位置的值一定为 )

输出格式

一行输出一个数字,代表成功逃生最多剩余的血量,如果失败输出 -−。

样例输入

- - - -

- - - -
样例输出

每一步的最大血量由之前的状态推出。需要注意的是:有的地方最大血量<0,不能终止搜索过程,因为可能可以从兄弟状态转换到儿子状态。

第二点就是除了单一状态的点,其他状态都不会重复访问,而单一状态的重复访问会导致血量叠加,所以用vis数组标记出,只访问一次。

比如 23 0 ,这样左上和左下都会到达0,0这个状态。。。

最新文章

  1. angular view之间的数据传递
  2. 1019mysql 复制技术
  3. 支付安全基础 —— HTTPS的故事
  4. pandas 给数据打标签
  5. java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration解决方法
  6. node.js简单的页面输出
  7. JavaScript: bind apply call
  8. mysql触发器使用实例
  9. iOS应用之间的跳转与数据传递
  10. [Swust OJ 856]--Huge Tree(并查集)
  11. ZOJ 3826 Hierarchical Notation 模拟
  12. android中怎么调整字体的间距和行间距
  13. java_AWT常用组件
  14. VxWorks操作系统shell命令与调试方法总结
  15. 如何利用webpack4.0搭建一个vue项目
  16. Confluence 6 查看你的许可证细节
  17. 对JS作用域和作用域链的理解
  18. XML xmlns
  19. 数据?算法-&gt; which is important?
  20. 配置OpenVpn使用证书和用户名密码双验证

热门文章

  1. 二十道经典C#面试题
  2. Java import javax.servlet 出错
  3. Android -- sqlite数据库随apk发布
  4. facebook开源的adb 工具,解决adb连不上手机的问题
  5. 转:sublime2 官方网址
  6. 【React】初识React
  7. (剑指Offer)面试题13:在O(1)时间内删除链表结点
  8. 超棒的HTML5/CSS3单页面响应式模板(支持Bootstrap)
  9. Android Activity的生命周期的几个方法介绍
  10. KineticJS教程(7)