dp之混合揹包poj1742(推薦)

2022-04-28 15:00:14 字數 552 閱讀 6831

題意:給你價值為a1,a2.....的貨幣,每種有c1,c2.......個,求這些貨幣所能組成的價值小於等於m有多少個.....

思路:很像一道多重揹包題?那我一開始的確是用多重揹包的思路編寫的......tle了,原來其中隱藏著乙個被我忽視的乙個問題,當ai*ci>=m時,我們沒有必要去拆分ci了,就直接把這種情況當作完全揹包處理.......

#include#include#includeusing namespace std;

int dp[100005],t[300][2];

int n,m;

int sum;

void deal1(int x)

}int main()

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

dp[0]=1;

sum=0;

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

deal1(t[i][1]*t[i][0]);

}else}}

printf("%d\n",sum);

}return 0;

}

POJ 1742多重揹包問題

include include include include includeusing namespace std define maxn 105 define maxl 100005 int weight maxn c maxn f maxl user maxl int main printf ...

poj 1742 多重揹包(單調佇列)

如題 又是這道題 第一種方法是二進位制拆分多重揹包 能過hdu2488 見我這一篇 第二種是為了減小時間複雜度,通過改變dp策略 能過poj1742 不能過杭電 這裡說第三種,多重揹包的0 vn 複雜度演算法。使用了單調佇列。這位大牛寫的很清楚 也就是找出狀態轉移方程中的重複狀態,然後將容量拆成v拆...

POJ1742 動態規劃 多重揹包

題意 問多重部分和能否恰好等於m。思路 dp i j 用前i種面額硬幣湊成j後,第i種硬幣最多剩下的個數,若湊不成則為 1.可優化空間複雜度。反思 想不出應該如此定義dp陣列。include using namespace std int a 100 10 int c 100 10 int dp 1...