Problem 1 恐狼后卫(wolf.cpp/c/pas)
【题目描述】
著名卡牌游戏《石炉传说》中有一张随从牌:恐狼后卫。恐狼后卫的能力是使得相邻随从的攻击力提高。
现在有n张恐狼后卫顺序排成一排,第i只恐狼后卫的攻击力为a[i],血量为h[i],提升相邻随从的攻击力值为b[i]。
你的攻击力为atk,每次攻击你可以选择一只存活的恐狼后卫,减少其血量值atk。若其血量小于等于0,则该恐狼后卫死亡。当某只恐狼后卫死亡时,其左右两侧(若存在)的恐狼后卫会靠拢并成为相邻关系。
在攻击第i只恐狼后卫时,除了要承受这只恐狼后卫自身的攻击力a[i]之外,还要承受与其相邻的2张恐狼后卫的提高攻击力值b[i-1]和b[i+1](若存在)。
你的任务是承受最少的总伤害杀死所有恐狼后卫,输出需承受的伤害值。
【输入格式】
第一行一个正整数n,表示恐狼后卫的数量。
第二行一个正整数atk,表示你的攻击力。
以下n行,每行3个值:a[i]、b[i]、h[i],分别表示第i只恐狼后卫自身的攻击力值、提升相邻随从的攻击力值、血量值。
【输出格式】
一个整数,表示杀死所有恐狼后卫需要承受的最少伤害值。
【样例输入】
3
1
8
1 6
3
5 7
4
9 2
【样例输出】
94
【数据范围】
对于30%的数据,n
<= 10
对于另外30%的数据,n
<= 100, h[i] = 1
对于100%的数据,n
<= 400,atk、a[i]、b[i]、h[i]
<= 1000
很简单,区间动规嘛,我这样的juruo都现场ac了。设状态f[i][j]代表开区间(i,j)内的东东被全部杀掉的代价。
转移方程为f[i][j]=min{f[i][k]+f[k][j]+attack[k]+improvement[i]+improvement[j]}
省选培训第二次模拟赛rank20+,果然我还是太弱