1002 Business (35分)
題目傳送門:1002 Business (35分)
一、題目大意
任務調度··
二、解題思路
剛開始用dfs超時了···然後參考了某位網友的思路,使用動態規劃寫出來了
參考題解:https://blog.csdn.net/qq_41562704/article/details/100826468
三、AC代碼
#include<bits/stdc++.h>
using namespace std;
const int N = 51;
struct Node{
int p, l, d;
bool operator<(const Node&that)const{
return d < that.d;
}
};
int len = 0;
vector<Node>v;
int main(){
int n;
cin >> n;
v.resize(n);
for(int i = 0; i < n; i++){
cin >> v[i].p >> v[i].l >> v[i].d;
}
sort(v.begin(), v.end());
len = v.back().d;
vector<vector<int> >dp(n+1, vector<int>(len+1, 0));
for(int i = 1; i <= n; ++i){
for(int j = 1; j <=len; ++j){
int t = min(j, v[i-1].d) - v[i-1].l;
if(t >= 0){
dp[i][j] = max(dp[i-1][j], dp[i-1][t] + v[i-1].p);
}else{
dp[i][j] = dp[i-1][j];
}
}
}
cout << dp[n][len] << endl;
}