PAT-Top-1002 Business (35分) 動態規劃(0-1揹包)

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;
}

發佈了232 篇原創文章 · 獲贊 437 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章