hdu2844 多重揹包

2021-10-03 15:59:11 字數 1009 閱讀 3866

讀題能力還是不行,英文水平不夠,只能靠翻譯:

華沙人用硬幣。他們有價值a1、a2、a3的硬幣……一枚銀幣。一天,希比克斯開啟錢包,發現裡面有一些硬幣。他決定在附近的一家商店買一塊非常好的手錶。他想支付確切的**(不找零),他知道**不會超過m,但他不知道手錶的確切**。

你要寫乙個程式,它讀取n,m,a1,a2,a3.an和c1,c2,c3.cn,對應於托尼價值為a1,a2,a3.的硬幣的數量,然後計算托尼可以用這些硬幣支付多少**(形式1到m)。

輸入包含幾個測試用例。每個測試用例的第一行包含兩個整數n(1≤n≤100000),m(m≤100000),第二行包含2n個整數,表示a1、a2、a3.an、c1、c2、c3.cn(1≤ai≤100000,1≤ci≤1000)。最後乙個測試用例後面跟兩個零。

對於每個測試用例,在一行中輸出答案。

**如下

#include

#include

#include

#define maxn 150001

using namespace std;

int dp[maxn],value[maxn],number[maxn];

int n,m;

void zeroonepack(int weight,int value)

}void completepack(int weight,int value)

}void multiplepack(int weight,int value,int number)

else

zeroonepack(numberweight,numbervalue);}}

int main(void)

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

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

for(i=1;i<=m;i++)

cout<

}return 0;

}

hdu 2844 多重揹包)

思路 其實就是多重揹包的應用,只是這裡價值和重量是相等的,因此最後計數是要計價值和重量相等的個數 1 include2 include3 const int n 100010 4 using namespace std 5int n,m 67 struct nodenode n 100 11 int...

hdu 2844 多重揹包

真爽啊 打完一把絕對carry的亞索 來做這題 一發ac touch me 這題 反正資料很大 不用二進位制拆分 肯定tle的 反正 二進位制拆分 很簡單的啊 不會的 現在看我 學下就好了。1 include 2 include 3 using namespace std 45 const int ...

入門多重揹包 HDU2844

題目鏈結 給你若干種面值的硬幣,每種硬幣有多個,給你乙個數字m,問你能用給你的硬幣組合出和為1 m之間的幾種情況,例如1個兩元硬幣 2個一元硬幣 m 3時 就能組合出來1 2 3 答案就是三 m 4時,答案就是4 m 5時答案還是4。難得我解釋了一次題意,hh 如果會01揹包與完全揹包,多重揹包其實...