这个题的本质是一个路径规划问题。你有n个街区,每个街区有步行时间a_i,可以选择步行一格或乘坐地铁跳跃1到K个街区,地铁每格花费B时间。你最多可以坐M次地铁,目标是找到从第1个街区到第N个街区的最小时间消耗。
此题是一个经典的动态规划问题,设置dp[i][j]为走到第i个街区并且已经坐了j次地铁的最短时间,转移则分为两种情况,一种是从前一个位置到当前位置不做地铁,一种是坐地铁到当前位置,第二种情况要枚举从前方哪里坐的地铁到现在的位置,并取最小值,初始化则为全不坐地铁的情况
小明需要走路从城市的一端前往另一端。城市可以视为一个长条形,共有N个街区,按顺序排成一列,
每个街区的右侧紧挨着下一个街区的左侧。
初始时,小明位于第1个街区的左侧,他的目标是到达第N个街区的右侧。步行通过第n个街区时,小明需要花费的时间为an。
同时,小明可以选择坐最多M次地铁。每个街区的左侧都有地铁站,每次坐地铁可以穿越前方最少1个,最多k个连续的街区。
坐地铁穿越任何一个街区所需的时间都是一个常数B(如果穿越2个街区,所需的时间是2×B,以此类推),进地铁站、出地铁站、等待地铁均不耗费时间。
前两行各包含一个正整数,分别对应 N 和 K。
第三行包含 N 个非负整数,以空格分隔,对应于步行穿过每个街区所消耗的时间。
后两行各包含一个非负整数,分别对应 B 和 M。
1≤N≤10,1≤K≤10,0≤M≤10,以任何方式通过单个街区所需要的时间
(包括所有an以及 B 的值)不超过104。
一个整数,表示穿越整个城市花费的最短时间。
输入
5
1
3 7 5 3 6
0
2
输出
11
说明
总共5个街区,坐地铁每次只能通过1个街区,坐地铁消耗时间为0,最多可以坐2次地铁。
最少消耗的方案为:坐地铁通过第2个和第5个街区,其余街区步行,最终消耗时间为3+0+5+3+0=11。
输入
5
2
1 2 1 2 2
3
2
输出
8
说明
全程走路,不坐地铁,最终消耗时间为1+2+1+2+2=8。
输入
10
2
4 1 12 1 6 7 2 4 4 4
3
2
输出
29
说明
坐地铁两次,分别穿越第3个街区以及第5−6个街区,
最终消耗时间为4+1+3(地铁)+1+3×2(地铁)+2+4+4+4=29。