今天重新學習了多重揹包,為選拔賽做準備。
這道題學習了大神鍵盤上的舞者的模板,感謝~
本題就是簡單的多重揹包,先判斷將該硬幣化為完全揹包還是01揹包處理,01揹包利用二進位制化簡。
題目求的是一共能表示多少種price,這裡答案用dp[ i ] == i 判斷,原因如下:
這道題全部初始化為零,也就是不裝滿求最大,硬幣代表的價值為揹包容量,同時也是揹包裡的值。當dp[ i ]即最大容量為i時,裝i是最大的,而當dp[ i ]的值不等於i,則說明沒裝滿,也就是說會有 dp[ dp[ i ] ] = dp[ i ],所以每一種price都會在dp[ price ]中出現,故這樣求結果。
#include#include#include#include#include#include#includeusing namespace std;
int n,m;
int v[110];
int t[110];
int dp[100010];
void mp(int value,int space,int num);
int main()
}//多重揹包判斷轉化
void mp(int value,int space,int num)
else
zop(value*num,space*num);
}}
hdu 2844 多重揹包)
思路 其實就是多重揹包的應用,只是這裡價值和重量是相等的,因此最後計數是要計價值和重量相等的個數 1 include2 include3 const int n 100010 4 using namespace std 5int n,m 67 struct nodenode n 100 11 int...
hdu2844 多重揹包
讀題能力還是不行,英文水平不夠,只能靠翻譯 華沙人用硬幣。他們有價值a1 a2 a3的硬幣 一枚銀幣。一天,希比克斯開啟錢包,發現裡面有一些硬幣。他決定在附近的一家商店買一塊非常好的手錶。他想支付確切的 不找零 他知道 不會超過m,但他不知道手錶的確切 你要寫乙個程式,它讀取n,m,a1,a2,a3...
hdu 2844 多重揹包
真爽啊 打完一把絕對carry的亞索 來做這題 一發ac touch me 這題 反正資料很大 不用二進位制拆分 肯定tle的 反正 二進位制拆分 很簡單的啊 不會的 現在看我 學下就好了。1 include 2 include 3 using namespace std 45 const int ...