零崎有很多朋友,其中有乙個叫做lfj的接盤俠。
lfj是乙個手殘,他和零崎一起玩網遊的時候不好好打本,天天看拍賣行,沒過多久,就成為了乙個出色的商人。不過再出色的投機商也有失手成為接盤俠的一天。所謂真正的接盤俠從來不給自己留活路。當lfj接盤成功之時,即分文不剩之日。
作為lfj的友人,零崎實在看不下去,於是他決定幫lfj一把。當然了,零崎肯定不會自己動手,活還得你們來幹。
lfj可以提供給你們拍賣行所有能買到物品的**和利潤,還有他的本金。既然是接盤俠,就必須分文不剩。雖然零崎想讓你們給出一次接盤中利潤最大的購買方案,但是lfj覺得只要知道最大利潤就可以了。
每組資料第一行為兩個整數p和n,表示本金和拍賣行物品個數。(注意:與b題不同每類物品只有一件
接下來n行,每行兩個資料pi,ci代表第i類物品的利潤和購買**。
1<=p<=20000,1<=n<=300,1<=c,p<=200
對於每組資料,輸出一行,為能獲得的最大利潤
如果不能成功接盤,則輸出jpx
3 1
2 14 3
3 11 3
2 2
jpx
4
使用if直接比較不要呼叫max()以防超時
解題分析:改題和0-1揹包問題類似,不過要求實現將揹包的整個容量v,也就是題目中的本金p,全部用盡,同時要求得到利潤最大。需要對裝入的每件商品進行判斷,首先是能否滿足耗盡本金,另外判斷是否比上次的利潤大。
先給出關鍵的**段配合思考:
1明白上述講解之後,下面的輸出以及輸入只是按照題目要求進行。for(int i=0;i)
2
**實現:
1 #include 2另附0-1揹包的實現**:#define max_size 20010
3int
v[max_size];45
using
namespace
std;67
intmain()821
if(v[p]==-1
)22 printf("
jpx\n");
23else
24 printf("
%d\n
",v[p]);25}
26 }
1出處: >void zoreonepack(int cost , int
weight)
2
100 零崎的朋友很多
時間限制 2000 ms 記憶體限制 65536 kb 總通過人數 233 總提交人數 247 零崎有很多朋友,其中有乙個叫做lfj的接盤俠。lfj是乙個手殘,他和零崎一起玩網遊的時候不好好打本,天天看拍賣行,沒過多久,就成為了乙個出色的商人。時間一長,雖然掙了不少錢,卻沒時間練級了。作為lfj的友...
零崎的朋友很多 (矩陣鏈相乘)
零崎有很多朋友,其中有乙個叫jhljx。jhljx大家很熟悉了,他數學不好也是出了名的,大家都懂。現在jhljx遇到了矩陣乘法,他當時就懵了。數都數不清的他,矩陣乘法怎麼可能會算的清楚呢?雖然零崎覺得還不如讓你們來算,不過好歹也要給jhljx個面子,給她留下乙個證明自己數學實力的機會。為了減小jhl...
SDUT揹包(01)換零錢
有揹包原理並是不是揹包問題。通過滾動陣列來求出和 而不是用揹包來求最優 cpp view plain copy 從前乙個轉態轉移過來,選還是不選 for inti 1 i n i else f i j f i 1 j 一維滾動陣列 for inti 1 i n i for intj m j 1 j ...