類似揹包問題的動態規劃 洛谷P1282多公尺諾骨牌

2021-10-02 15:36:06 字數 1179 閱讀 9615

原題鏈結

2種思路

第1種:

#include

#include

#include

#include

#include

#include

using

namespace std;

int n,ans=

1005

;int a[

1005

],b[

1005];

int f[

1005][

10005];

//這個意思是前i件物品的差值為j時的翻轉次數是dp[i][j];

int p=

5001

;int

main()

cout

}

第二種:

轉換為揹包問題

首先把數字大的牌全部翻轉到上面;

然後把最多可以減少的點數作為揹包的體積;

每乙個多公尺諾骨牌看作乙個物品,他的體積是翻轉以後可以減少的點數;

#include

using

namespace std;

const

int maxn=

1005

;int w[maxn]

;int dp[maxn]

[maxn]

;int v[maxn]

;int vs[maxn]

[maxn]

;int basic=0;

intmain()

else

}//dp[i][j]的意思是前i個物品,差值減少j最小需要翻轉的次數;

//vs[i][j]的意思是前i個物品,是否可以減少j的差值;

//答案就是減小的差值盡可能的大,並且翻轉次數盡可能小;

for(

int i=

1;i<=n;i++

)else}}

}int i;

for(i=tot;i>=

0;i--)}

printf

("%d\n"

,basic+dp[n]

[i])

;//開始已經翻轉了basic次才構成了只是上邊大的情況;

return0;

}

洛谷 1164 小A點菜(動態規劃的揹包問題)

題目背景 uim神犇拿到了uoi的ra 鐳牌 後,立刻拉著 小a到了一家 餐館,很低端的那種。uim指著牆上的價目表 太低階了沒有選單 說 隨便點 題目描述 不過uim由於買了一些輔 e 輔 ro 書,口袋裡只剩m元 m 10000 餐館雖低端,但是菜品種類不少,有n種 n 100 第i種賣ai元 ...

揹包型動態規劃 揹包問題1

在n個物品中挑選若干物品裝入揹包,最多能裝多滿?假設揹包的大小為m,每個物品的大小為a i 示例 樣例 1 輸入 3,4,8,5 backpack size 10 輸出 9 樣例 2 輸入 2,3,5,7 backpack size 12 輸出 12 首先要明確一點,在揹包問題中,陣列大小和總稱重有...

P2347 砝碼稱重 動態規劃遞推,揹包,洛谷

參考題解 點選進入 紀念我第一道沒理解題意的題 但不包括乙個砝碼也不用的情況 這句話我看成了每個砝碼起碼放乙個 然後就做不出來了 思路 1.這題資料很小,1000,所以其實沒必要把多重揹包用二進位制優化成01揹包,直接乙個個拆開就好了 2.建立陣列f 2000 用來f j 1表示存在重量為j這種可能...