zoukankan      html  css  js  c++  java
  • 逃生dp

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

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

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

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

    输入格式

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

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

    输出格式

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

    样例输入

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

    样例输出

    10

    蒜头君在玩一款逃生的游戏。在一个 n 	imes mn×m 的矩形地图上,蒜头位于其中一个点。地图上每个格子有加血的药剂,和掉血的火焰,药剂的药效不同,火焰的大小也不同,每个格子上有一个数字,如果格子上的数字是正数说明是一个药剂代表增加的生命值,如果是负数说明是火焰代表失去的生命值。
    
    蒜头初始化有 vv 点血量,他的血量上限是 cc,任何时刻他的生命值都不能大于血量上限,如果血量为 00 则会死亡,不能继续游戏。
    
    矩形地图上的四个角(1, 1)(1,1),(1, m)(1,m),(n, 1)(n,1),(n, m)(n,m)为游戏的出口。游戏中只要选定了一个出口,就必须朝着这个方向走。例如,选择了左下的出口,就只能往左和下两个方向前进,选择了右上的出口,就只能往右和上两个方向前进,左上和右下方向的出口同理。
    
    如果成功逃生,那么剩余生命值越高,则游戏分数越高。为了能拿到最高分,请你帮忙计算如果成功逃生最多能剩余多少血量,如果不能逃生输出 -11。
    
    输入格式
    
    第一行依次输入整数 nn,mm,xx,yy,vv,cc(1 < n,m leq 10001<n,m≤10001 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)
    
    输出格式
    
    一行输出一个数字,代表成功逃生最多剩余的血量,如果失败输出 -11。
    
    样例输入
    
    4 4 3 2 5 10
    1 2 3 4
    -1 -2 -3 -4
    4 0 2 1
    -4 -3 -2 -1
    样例输出
    
    10
    View Code

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

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

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

  • 相关阅读:
    Best Time to Buy and Sell Stock III
    Valid Palindrome
    Longest Substring Without Repeating Characters
    Copy List with Random Pointer
    Add Two Numbers
    Recover Binary Search Tree
    Anagrams
    ZigZag Conversion
    Merge k Sorted Lists
    Distinct Subsequences
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/6407457.html
Copyright © 2011-2022 走看看