動態規劃專項advanced LA 4625

2021-06-17 23:50:15 字數 660 閱讀 3367

這道題要求解的問題是使最大值最小的問題,所以可以加乙個引數加以限制,然後判斷是否可行用二分的方法求解答案。

這裡二分每個half-segment上的最大重量,然後剩下來需要做的就是判斷是否存在乙個方案滿足該條件。容易想到的是貪心,即每一段取盡量多的pieces,看m-1段能否將pieces全部取完,然而這個貪心是錯的。

看這樣乙個例子:n=8,m=4,d=10,w=。按上述貪心,結果為7,然而不難發現正確答案應為10。

經過觀察發現,若按上述貪心得到的段數與m-1同奇偶,則結論成立,因為可以將其中一段拆成2段,不會影響結論。

得到上述的性質就可以通過乙個二維dp[i][j(0<=i<=n,0<=j<=1)]求解出取到第i個pieces時,所需奇偶性與j相同的最短段數。最後判斷dp[n][(m-1)%2]

#include #include #include #include using namespace std;

const int maxn=40010;

const int inf=1<<30;

int n,m,d;

int w[maxn],s[maxn];

int dp[maxn][2];

bool judge(int x)}}

return dp[n][(m-1)%2]n)

if(2*d*(m-1)

python動態規劃dp專項

總結幾個網上關於動態規劃的經典例題,用python實現 1.入門 湊硬幣 用1,3,5面值的硬幣湊i元,最少需要幾個硬幣 author xinxinzhang n 12 湊11元 total i for i in range n v 1,3,5 for i in range 1,n for j in...

動態規劃 什麼是動態規劃?

先來看看 資訊學奧賽一本通第5版 是怎麼說的 動態規劃程式設計是對解最優化問題的一種途徑 一種方法,而不是一種特殊演算法。不像前面所述的那些搜尋或數值計算那樣,具有乙個標準的數學表示式和明確清晰的解題方法。動態規劃程式設計往往是針對一種最優化問題,由於各種問題的性質不同,確定最優解的條件也互不相同,...

mysql動態規劃 動態規劃

動態規劃 能夠動態規劃的問題具有以下特點 可分解成規模更小的子問題 子問題的結果可復用 關鍵是要理解狀態轉移方程的含義就好啦!數字三角形 問題描述 在數字三角形尋找從頂到底的路徑,使得路徑經過的數字之和最大。規定每一步只能往左下或右下走,求出最大路徑和。遞迴解法 include include us...