動態規劃基本模型(二)

2021-07-24 16:42:43 字數 544 閱讀 4696

區間dp

例題:石子合併;

先使用a[i]初始化每個石子的價值

合併n個則需要先合併n-1個 子問題就是合併1~n個的最小值

則合併l長度個的最小值為合併左結點到右結點的最小值;

子問題為每個區間的合併最小值;

使用k列舉每個區間;

則有dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+合併這兩段的和)

使用sum[i]初始化每段的價值;

for (int i=1;i<=n;i++)

sum[i]=sum[i]+a[i-1];

則有兩段合併的和為右側結點的sum減去左側結點的sum 

即sum[j]-sum[i-1];

輸出dp[1][n]即可

#include#include#include#includeusing namespace std;

int n;

int a[1001],dp[1001][1001],sum[1001];

int main ()

} }cout<

動態規劃 金礦模型

問題描述 有people個人和 num個金礦,開採 每個金礦都需要i people個人,可以獲得i getgold個金子,並且用過的人不可以重複使用,問從這 num個金礦中最多可以得到多少個金子 輸入輸入第一行有兩個數,第乙個是用來開採金礦的總人數,第二個是總金礦數。輸入檔案的第2至n 1行每行有兩...

動態規劃 DAG模型

有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a c,b d或者b c,a d 相當於旋轉x90度 例 1,5 可以巢狀在 6,2 內,但不能巢狀在 3,4 中。你的任務是選出盡可能多的矩形排成一行,使得除最後乙個外,每乙個矩形都可以巢狀在下...

動態規劃 DAG模型

dag 有向無環圖 上的動態規劃是學習動態規劃的基礎。有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a c,b d或者b c,a d 相當於旋轉x90度 例 1,5 可以巢狀在 6,2 內,但不能巢狀在 3,4 中。你的任務是選出盡可能多的矩...