時間限制:20000ms
單點時限:1000ms
記憶體限制:256mb
描述且說之前的故事裡,小hi和小ho費勁心思終於拿到了茫茫多的獎券!而現在,終於到了小ho領取獎勵的時刻了!
等等,這段故事為何似曾相識?這就要從平行宇宙理論說起了………總而言之,在另乙個宇宙中,小ho面臨的問題發生了細微的變化!
小ho現在手上有m張獎券,而獎品區有n種獎品,分別標號為1到n,其中第i種獎品需要need(i)張獎券進行兌換,並且可以兌換無數次,為了使得辛苦得到的獎券不白白浪費,小ho給每件獎品都評了分,其中第i件獎品的評分值為value(i),表示他對這件獎品的喜好值。現在他想知道,憑藉他手上的這些獎券,可以換到哪些獎品,使得這些獎品的喜好值之和能夠最大。
提示一: 切,不就是0~1變成了0~k麼
提示二:強迫症患者總是會將狀態轉移方程優化一遍又一遍
提示三:同樣不要忘了優化空間哦!
輸入每個測試點(輸入檔案)有且僅有一組測試資料。
每組測試資料的第一行為兩個正整數n和m,表示獎品的種數,以及小ho手中的獎券數。
接下來的n行描述每一行描述一種獎品,其中第i行為兩個整數need(i)和value(i),意義如前文所述。
測試資料保證
對於100%的資料,n的值不超過500,m的值不超過10^5
對於100%的資料,need(i)不超過2*10^5, value(i)不超過10^3
輸出對於每組測試資料,輸出乙個整數ans,表示小ho可以獲得的總喜好值。
樣例輸入
5 1000樣例輸出144 990
487 436
210 673
567 58
1056 897
5940因為要優化記憶體,所以開了一維陣列,覺得開二維陣列占用空間太大,可能要崩!(100000*500)!!!
#include #include int f[100002];int c[600];
int w[600];
int max(int a, int b)
int main()
memset(f, 0, sizeof(f));
for(j=1; j<=n; j++)}}
printf("%d\n", f[m] );
}return 0;
}
hihocoder 完全揹包
小ho現在手上有m張獎券,而獎品區有n種獎品,分別標號為1到n,其中第i種獎品需要need i 張獎券進行兌換,並且可以兌換無數次,為了使得辛苦得到的獎券不白白浪費,小ho給每件獎品都評了分,其中第i件獎品的評分值為value i 表示他對這件獎品的喜好值。現在他想知道,憑藉他手上的這些獎券,可以換...
第七周作業 揹包問題
揹包問題 是一種組合優化的np完全問題 問題可以描述為 給定一組物品,每種物品都有自己的重量和 在限定的總重量內,我們如何選擇,才能使得物品的總 最高。思想 特點是 每種物品僅有一件,可以選擇放或不放用子問題定義狀態 即f i v 表示前i件物品恰放入乙個容量為v的揹包可以獲得的最大價值。則其狀態轉...
HihoCoder 1043 完全揹包
華電北風吹 天津大學認知計算與應用重點實驗室 2016 06 24 題目分析 01揹包的完全揹包問題,思路跟01揹包類似,只是更新的時候對所有的容量狀態全部更新。problem1043.cpp 定義控制台應用程式的入口點。1043 完全揹包 張正義 2016 04 12 include stdafx...