解题思路:

注意事项:说实话没怎么看懂!

参考代码:

#include <iostream>

using namespace std;

int main()

{    //d[i]代表第i分钟可以跑的路程

    //dp[n][m][0]代表第n分钟疲倦度为m且正在跑的路程,dp[n][m][1]就是休息时

    int n,m,dp[10001][501][2]={0};

    cin>>n>>m;

    int d[n];

    for(int i=1;i<=n;i++)cin>>d[i];

    

    for(int i=1;i<=n;i++)

        for(int j=0;j<=m;j++)

        {

            if(j==0)//j=0,那我必须运动哈

            dp[i][j][0]=max(max(dp[i-1][j+1][1],dp[i-1][j+1][0]),dp[i-1][j][0]);

            //dp[i-1][j+1][1]上一分钟,疲惫度为1,一直休息下来

            //dp[i-1][j+1][0]上一分钟,疲惫度为1,正在运动,现在休息下来

            //dp[i-1][j][0]上一分钟的同种情况

            else if(j==m)

            {

                dp[i][j][1]=dp[i-1][j-1][0]+d[i];

                //疲倦度满时只可能从上一分钟跑来的

            }

            else

            {

                dp[i][j][1]=max(dp[i-1][j+1][1],dp[i-1][j+1][0]);//选择休息

                //从上一分钟休息来的

                dp[i][j][0]=dp[i-1][j-1][0]+d[i];//选择运动

                //从上一分钟跑来的

            }

        }

    cout<<dp[n][0][0];

}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论