E Knapsack 2 題解 超大01揹包

2022-06-10 17:45:11 字數 858 閱讀 9259

給你一n(n<=100)個物品,物品價值最大為1e3,物品體積最多為1e9,揹包最大為1e9

如果按照平常的揹包來算那麼時間複雜度直接o(1e11)

這個你觀察就發現其實最大的價值沒超過1e5

那麼你可以改變你的dp方程來求解

設dp[i]表示獲得價值i的最小物品體積即可

#include#include#include#include#include#include#include#include#include#include#include#include#define fi first

#define se second

#define debug printf(" i am here\n");

using namespace std;

typedef long long ll;

typedef unsigned long long ull;

typedef pairpii;

const ll inf=0x3f3f3f3f3f3f3f3f;

const int maxn=1e5+500,inf=0x3f3f3f3f,mod=1e9+7;

const double eps=1e-10;

int n,sum;

int w[maxn],v[maxn];

ll dp[maxn];

signed main()

memset(dp,0x3f,sizeof(dp));

dp[0]=0;

for(int i=1;i<=n;i++)

}for(int i=1e5;i>=0;i--)

}return 0;

}

超大01揹包問題

超大揹包問題 有n個重量和價值分別為w i 和v i 的物品,從這些物品中挑選總重量不超過w的物品,求所有挑選方案中價值總和的最大值。其中,1 n 40,1 w i v i 10 15,1 w 10 15.這個問題給人的第一感覺就是普通的01揹包。不過,看完資料範圍會發現,這次價值和重量都可以是非常...

超大揹包問題題解

有 n nn 個重量和價值分別為 w iw i wi 和 v iv i vi 的物品。從這些物品中挑選出總重量不超過 w ww 的物品放入揹包中,求揹包裡物品價值總和的最大值。n wv 1w1v 2w2.vnw nn space w v 1 space w 1 v 2 space w 2 v n s...

超大揹包問題(01揹包)

超大揹包問題 有n個重量和價值分別為w i 和v i 的物品,從這些物品中挑選總重量不超過w的物品,求所有挑選方案中價值總和的最大值。其中,1 n 40,1 w i v i 10 15,1 w 10 15.這個問題給人的第一感覺就是普通的01揹包。不過,看完資料範圍會發現,這次價值和重量都可以是非常...