題目大意
有一根長為n的木棍,截一次木棍的代價為這個木棍的長度,現在知道要在這個木棍的**切割,問你最小的代價是多少
解題思路
寫的時候沒有看出來是個區間dp
dp[i][j]代表的是在第i個切割點和第j個切割點之間切割的最小代價
那麼:dp[i][j]=min(minn,dp[i][k]+dp[j][r]+a[j]-a[i]);(k是區間i,j中的斷點)
#include
#include
#include
using namespace std;
const
int n=
1005
;int a[n]
,dp[n]
[n];
const
int inf=
0x3f3f3f3f
;int
main()
if(minndp[l]
[r]=minn;}}
printf
("the minimum cutting is %d.\n"
,dp[0]
[n+1])
;}return0;
}
動態規劃練習 UVa10003 區間dp
紫書上的動態規劃例題,很明顯是乙個區間線性規劃的問題,想起之前做過的矩陣鏈乘,這題和它很像,列舉方向都是向j i遞增的 方向,這裡有個大神的區間dp模板的總結 可以強化理解。所以,設dp i j 為切割小木棍i j點的費用,則dp i j min,a j a i 表示第一刀切割為i j的費用,而 d...
uva 10003 切割木棍
題意 給了一根長度為l的木棍,另外給了一些要切的點的座標,可以把這個木棍理解為橫座標軸,每個能切割的地方的都有固定的座標。現在要求你把這個木棍按照切割位置切割,每次切割消耗的能量就是當前木棍的長度。現在要你選擇如何切割,使得消耗最小。解題思路 區間dp.狀態表示 dp i j 表示從i到j這個區間的...
Sum遊戲 Uva10891 區間dp
給定乙個序列,a,b玩家輪流取數,每次只能從一段取若干個數,乙個人取數的和代表該人的得分,若a,b都採取最優策略,問a的得分 b的得分 對於都是正數的情況,肯定一次取完就可以。但是由於有負數,所以我們就要考慮列舉取法 已知取完後的序列一定是原序列的乙個子串行,因此,我們列舉取法 dp i j 表示剩...