码迷,mamicode.com
首页 > 其他好文 > 详细

蒜头君的坐骑

时间:2017-07-30 13:56:36      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:code   其他   开始   otto   efault   desc   include   title   script   

蒜头君有一只坐骑,人马。

一天,蒜头君骑着他的坐骑走上了一片 n \times mn×m 的大荒野,一开始时,蒜头君在 (1,1)(1,1) 点,他要前往 (n,m)(n,m) 点,蒜头君的人马每次可以向右或向下移动一格。然而这片荒野并不平静,除了起点和终点外每个点都有一只怪物会袭击蒜头君。

然而蒜头君的人马强大无比,它会先对怪物造成等同于它攻击力的伤害,然后蒜头君才会受到怪物的攻击,伤害等同于怪物的攻击力。然后人马再攻击怪物,怪物再攻击蒜头君,直至怪物死去,假设每个怪物具有相同的体力。

此外,蒜头君的人马还有一个强大无比的技能,使用该技能会使蒜头君接下来 kk 次移动,每一次移动后增加等同于移动到的格子的怪物的攻击力,kk 次移动后,人马攻击力恢复至初始攻击力。人马必须在当前一个技能释放完后才可以释放下一个技能,且一共可释放技能的次数有限,那么试问蒜头君从起点到终点最少受到多少点伤害。

注意:蒜头君的体力是无限的。

输入格式

第一行六个正整数 n,m,t,k,h,atkn,m,t,k,h,atk,表示地图长度、宽度、人马技能可使用次数、人马技能持续移动次数、每只怪物的体力和人马的初始攻击力。保证 n+m-1 \ge t \times kn+m?1t×k。

接下来 nn 行,每行 mm 个整数,表示每个点的怪物的攻击力。保证 (1,1)(1,1) 点、(n,m)(n,m) 点为 00,其他点为正整数。

输出格式

输出一个整数,表示蒜头君受到的最小伤害。

数据规模

对于 3030% 的测试数据,满足 1 \le n,m \le 10,1n,m101 \le t \le 3,1t31 \le k \le 31k3;

对于 6060% 的测试数据,满足 1 \le n,m \le 100,1n,m1001 \le t \le 10,1t101 \le k \le 51k5;

对于 100100% 的测试数据,满足 1 \le n,m \le 500,1n,m5001 \le t \le 10,1t101 \le k \le 5,1k51 \le atk \le h \le 100,1atkh1001 \le1≤ 怪物攻击力 \le 100100。

样例输入

4 3 2 1 7 4
0 2 4
3 5 1
2 3 2
5 4 0

样例输出

3
题解:dp+dfs
首先,定义f[i][j][l]为在(i,j)时有l次技能的最小值,因为技能不能打断,使用后自动触发,所以无后效性
显然,对于x,y转移有两种情况,一种直接移动,一种是用技能
直接移动不说了,用技能则调用一次dfs,转移到k次以后的节点

蒜头君的坐骑

标签:code   其他   开始   otto   efault   desc   include   title   script   

原文地址:http://www.cnblogs.com/Y-E-T-I/p/7258754.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!