給你一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揹包。不過,看完資料範圍會發現,這次價值和重量都可以是非常...