王者荣耀

链接:https://ac.nowcoder.com/acm/contest/318/J
来源:牛客网
 

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

 "无论何时何地,都会遵守约定"。"奋力逃吧"。"关于取下敌人性命这件事,也从不失约"。

小懒虫zmx平时最喜欢玩的游戏就是《王者荣耀》,在这款游戏中它也最喜欢百里守约这个英雄。最近,zmx准备冲国服百里,所以它开始练英雄,你有很多个时间段来练习英雄,每个时间段有一个开始时间点和结束时间点,以及可以获得的熟练度。不过现在你可以随意修改任意练习时间段的开始和结束时间点,但是你不能修改时间段的长度和获得的熟练度!由于要学习,你只能在固定时间段玩游戏,问你最多可以获得多少熟练度?

例如:你可以把[2,3),修改为[1,2)或者[3,4)等等,他们的长度都是1。

注意:对于某个时间段,不管你有没有修改,必须练完整个时间段长度才能获得熟练度!

输入描述:

第一行,三个整数n,S,T(0<n<=1000,0<S<T<1000)代表n个时间段和你能在[S,T)时间段内玩游戏。

接下来n行,每行三个整数a,b(0<a<b<1000),c(0<c<1e7),用空格分开,代表时间段起始时间[a,b)和可以获得的熟练度。

输出描述:

输出一行,包括一个整数,表示zmx能获得的最大熟练度。

示例1

输入

复制

3 1 3
1 3 5
2 4 6
4 7 8

输出

复制

6

示例2

输入

复制

5 1 5
1 2 1
2 3 2
1 3 3
3 4 2
3 6 4

输出

复制

7

菜鸟的自己已经不会动态规划了……

201816080304大佬的代码

#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
#include <queue>
#include <algorithm>
#include <map>
using namespace std;
int x[1100],len[1100];
long long dp[100010];
int main()
{
    int n,s,t,a,b;
    while(scanf("%d %d %d",&n,&s,&t)!=EOF)
    {
        int chang=t-s;
        memset(dp,0,sizeof(dp));
        for(int i=1; i<=n; i++)
        {
            scanf("%d %d %d",&a,&b,&x[i]);
            len[i]=b-a;
        }
        for(int i=1; i<=n; i++)
        {
            for(int j=chang; j>=len[i]; j--)
            {
                dp[j]=max(dp[j],dp[j-len[i]]+x[i]);
            }
        }
 
        printf("%lld\n",dp[chang]);
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值