OpenJudge2.6基本算法之动态规划9267:核电站
题目传送门
这题和放苹果挺类似的,都是要分情况讨论i和m的大小关系
case1:如果i<m
这说明在这段区间里怎么放都不会炸,那么状态转移方程就是:a[i]=2*a[i-1].(乘2是因为每个坑有放和不放两种情况)
case2:如果i==m
情况同case1,只是要减去区间全放(会炸)的情况,那么状态转移方程就是:a[i]=2*a[i-1]-1.
case3:如果i>m
这是就要考虑会炸的情况了。我们采用减法的方式——即从总情况里减去会炸的情况。
如果第i位是不能放的,那么说明i-m这段区间肯定全放了,而且i-m-1这一位一定是0,因为如果该为是1的话就会在之前被处理掉,所以如果i为不能放,那么i-m-1这段区间的所有可能都需要从答案里减掉。那么状态转移方程就是:a[i]=2*a[i-1]-a[i-1-m]
AC代码: