题目描述:
奶牛Bessie有N分钟时间跑步,每分钟她可以跑步或者休息。若她在第i分钟跑步,可以跑出D_i米,同时疲倦程度增加1(初始为0)。若她在第i分钟休息,则疲倦程度减少1。无论何时,疲倦程度都不能超过M。另外,一旦她开始休息,只有当疲惫程度减为0时才能重新开始跑步。在第N分钟后,她的疲倦程度必须为0。
具体题目及评测:http://www.tyvj.cn/ 题目代号为 P1023
今天晚上没自修,想干点什么,时间不多,这种情况写动态规划似乎很合适。于是乎我就写了。
F[i][j]表示i分钟,j的疲劳程度所跑的最长距离。
因为奶牛一停下休息,就需要休息到体力恢复为0为止。所以F[i][0]和其他F[i][j]是不一样的
F[i][j] = F[i-1][j-1] + R[i] //就是一个递推的过程 因为不可能停下来休息
F[i][0]则可能是F[k][0](奶牛就是恢复了体力也不跑步)和F[i-k][k](刚恢复)
所以
F[i][0] = max{ F[i-k][k] , F[k][0] }
j <= i
0 <= k < j
F[0][j] = 0
代码: