题目大意:

第一行给定小懒虫玩游戏的时间段个数开始时间和结束时间

接下来的行,告诉你时间到时间可以获得熟练度.

让你求可以得到最大的熟练度。

但是题目有一个重要信息:小懒虫可以调整时间,也就是可以调整但是的差不变。

所以你并不用知道所对应的时间点, 只用看进行的时间就行了。

思路

则题目就变成了:已知总共有的时间,用去的时间可获得点熟练度。

想必很多人就猜到了,这就是01背包的模板(不会01背包的点这里)。

则这道题就

代码(可能有点丑)

//时间复杂度O(n^2), 空间复杂度O(n)
#include<bits/stdc++.h>
#define int long long

using namespace std;

const int MAXX = 1e3 + 5;

int n, s, t, a[MAXX], b[MAXX], c[MAXX], dp[MAXX];

signed main(){
    cin >> n >> s >> t;
    for(int i = 1; i <= n; i++){
        cin >> a[i] >> b[i] >> c[i];
    }
    for(int i = 1; i <= n; i++){
        for(int j = t - s; j >= b[i] - a[i]; j--){
            dp[j] = max(dp[j], dp[j - b[i] + a[i]] + c[i]);
        }
    }
    cout << dp[t - s];
    return 0;
}