题解 | 星际勘探者

星际勘探者

https://www.nowcoder.com/practice/1a9c4a33372443a9944cd458a3269dac

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int m,n,k;
    cin>>m>>n>>k;
    vector<int>a(m+1);
    for(int i=1;i<=m;i++){
        cin>>a[i];
    }
    vector<int>dp(k+1,-1);
    dp[0]=n;
    int maxenergy = n;
    for(int i=1;i<=m;i++){
        for(int j=k;j>=0;j--){

            int best = -1;

            //不采集
            if (dp[j] > 0) {
                best = max(dp[j] - 1,best);
            }
 
            // 采集小行星 a[i]。
            // 从上一步的 dp[j-1] 状态转移而来。
            if (j > 0 && dp[j - 1] > 0) {
                best = max(dp[j - 1] - 1 + a[i],best);
            }

            dp[j]=best;
            maxenergy=max(maxenergy,dp[j]);
        }
    }
    cout << maxenergy << endl;

    return 0;
}

全部评论

相关推荐

牛客52811839...:实习要写出来业务和产出,你这写的像流水账没人看。项目经历也没有,换个极简简历试试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务