大致題意:
有兩個機器a,b。要處理n個部件,第i個部件在機器a上完成需要x[i],在b機器上需要y[i],每個部件只能選擇乙個機器來完成。且當地i個部件開始加工時前[1,i-1]部件必須已經完成或者正在被加工。求加工完所有n個部件的最小時間是多少。
大致思路:
好神的dp,這裡的狀態表示非常奇怪。dp[i][j]代表的是,當加工到第i個部件,a機器比b機器的時間多出j+100時的最少時間是多少。
轉移的時候就分別考慮當前任務放在a上或放在b上的最少時間分別是多少即可。
#include#include#include#include#include#define inf 2139062143
#define m 100
using namespace std;
int n,x[120],y[120];
int dp[210][250];
int main()
else
}} int ans=inf;
for(i=0;i<=200;i++)
ans=min(dp[n][i],ans);
printf("%d\n",ans);
} return 0;
}
入門DP 神奇的口袋
總time limit 10000ms memory limit 65536kb description 有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a 1,a2 a n。john可以從這些物品中選擇...
神奇的口袋(回溯 DP
有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是,john...
dp專題 神奇的口袋
有乙個口袋容積為m,有n個物品,題目的體積為a1,a2,a3 an。把m裝滿有多少種不同的裝法。遞迴 int dfs int n,int m 從n個物品中選出總體積為m的選法 遞推 dp i j dp i 1 j j a i dp i 1 j a i 0 初始條件 dp i 0 1 0 i n 全部...