洛谷1282 揹包

2021-09-11 10:48:39 字數 602 閱讀 4334

感覺還是對揹包問題不太熟練。

思路:先把n個卡牌第一層加起來記為sum1,第二層卡牌加起來記為sum2。如果sum1sum2。v=sum1-sum2.所以我們就將問題轉換成了,揹包總體積為v,n個物品,每個物品的價值為1,體積為(a[i]-b[i])*2。求使得剩餘體積盡量小的揹包問題。

體積會出現負數,所以要加以處理。

#include using namespace std;

typedef long long ll;

#define inf 0x3f3f3f3f

const int maxn=1005;

const int n=6000;

int a[maxn],b[maxn];

int dp[12*maxn];

int v[maxn];

int main()

if(sum1=-5000;j--)

} int i;

for(i=v;i>=1;i--)

if(inf!=dp[i+n]) break;

printf("%d",dp[i+n]);

return 0;

}

洛谷 P1282 多公尺諾骨牌 (揹包dp)

題目描述 多公尺諾骨牌有上下2個方塊組成,每個方塊中有1 6個點。上方塊中點數之和記為s1,下方塊中點數之和記為s2,它們的差為 s1 s2 例如在圖8 1中,s1 6 1 1 1 9,s2 1 5 3 2 11,s1 s2 2。每個多公尺諾骨牌可以旋轉180 使得上下兩個方塊互換位置。程式設計用最...

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

原題鏈結 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時的翻...

洛谷 P1282 多公尺諾骨牌 01揹包

傳送門 題目描述 多公尺諾骨牌有上下2個方塊組成,每個方塊中有1 6個點。現有排成行的 上方塊中點數之和記為s1,下方塊中點數之和記為s2,它們的差為 s1 s2 例如在圖8 1中,s1 6 1 1 1 9,s2 1 5 3 2 11,s1 s2 2。每個多公尺諾骨牌可以旋轉180 使得上下兩個方塊...