切木棍 UVA 10003 區間DP

2021-09-26 06:33:04 字數 623 閱讀 3979

題目大意

有一根長為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 表示剩...