题解 | #毕业bg#

毕业bg

http://www.nowcoder.com/practice/a3a99a0658a44cb1a37ddf5c164e21a6

总体采用动态规划思想,不过在规划之前,需要按离开时间对每一个bg进行排序,将离开时间早的排在前面。

然后再离开时间到开始时间内进行循环动态规划即可。

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

struct bg{
    int happy;
    int time;
    int leavetime;
    bool operator<(bg next){
        return leavetime < next.leavetime;
    }
};

const int MAXN = 30;
bg arr[MAXN];
int dp[1000];

int main(){
    int n;
    while(cin >> n){
        if(n<0) break;
        int leavetime;
        for(int i=0;i<n;i++)
            cin >> arr[i].happy >> arr[i].time >> arr[i].leavetime;
        memset(dp,0,sizeof(dp));
        sort(arr,arr+n);
        int maxAns = 0;
        
        for(int i=0;i<n;i++){
            for(int currenttime = arr[i].leavetime;currenttime>=arr[i].time;currenttime--){
                dp[currenttime] = max(dp[currenttime-arr[i].time]+arr[i].happy,dp[currenttime]);
                maxAns = max(maxAns,dp[currenttime]);
            }
        }
        cout << maxAns << endl;
        }
    
    return 0;
}
全部评论

相关推荐

瑞雪兆丰年_:可以贴个超级大的校徽,以防HR眼拙
点赞 评论 收藏
分享
09-22 09:42
门头沟学院 Java
牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
如果可以选,你最想去哪家...
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

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