G 零崎的朋友很多Ⅱ(0-1揹包修改版 )
題目描述
零崎有很多朋友,其中有一個叫做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 1
4 3
3 1
1 3
2 2
輸出樣例
jpx
4
Hint
使用if直接比較不要呼叫max()以防超時
解題分析:改題和0-1揹包問題類似,不過要求實現將揹包的整個容量V,也就是題目中的本金P,全部用盡,同時要求得到利潤最大。需要對裝入的每件商品進行判斷,首先是能否滿足耗盡本金,另外判斷是否比上次的利潤大。
先給出關鍵的程式碼段配合思考:
1 for(int i=0;i<n;i++) 2 { 3 scanf("%d%d",&pi,&ci); 4 for(int j=p; j >= ci; j--) 5 if(V[j-ci]!=-1&&V[j]<V[j-ci]+pi) 6 V[j]=V[j-ci]+pi; 7 }
明白上述講解之後,下面的輸出以及輸入只是按照題目要求進行。
程式碼實現:
1 #include <bits/stdc++.h> 2#define max_size 20010 3 int V[max_size]; 4 5 using namespace std; 6 7 int main() 8 { 9 int p,n,pi,ci; 10 while(~scanf("%d%d",&p,&n)) 11 { 12 memset(V,-1,sizeof(V)); 13 V[0]=0; 14 for(int i=0;i<n;i++) 15 { 16 scanf("%d%d",&pi,&ci); 17 for(int j=p; j >= ci; j--) 18 if(V[j-ci]!=-1&&V[j]<V[j-ci]+pi) 19 V[j]=V[j-ci]+pi; 20 } 21 if(V[p]==-1) 22 printf("jpx\n"); 23 else 24 printf("%d\n",V[p]); 25 } 26 }
另附0-1揹包的實現程式碼:
1 void ZoreOnePack(int cost , int weight) 2 { 3 for (int i = W ; i >= weight ; -- i) 4 f[i] = max(f[i],f[i-weight]+cost) ; 5 }
作者: 伊甸一點
本文版權歸作者伊甸一點和部落格園所有,歡迎轉載和商用,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利.
原文連結 如有問題, 可郵件([email protected])諮詢.
相關推薦
G 零崎的朋友很多Ⅱ(0-1揹包修改版 )
題目描述 零崎有很多朋友,其中有一個叫做lfj的接盤俠。 lfj是一個手殘,他和零崎一起玩網遊的時候不好好打本,天天看拍賣行,沒過多久,就成為了一個出色的商人。不過再出色的投機商也有失手成為接盤俠的一天。所謂真正的接盤俠從來不給自己留活路。當lfj接盤成功之時,即分文不剩之
HDU 2639 Bone Collector II(0-1揹包第k優解)
題意: 已知物品的個數、揹包的容量、每個物品的價值和體積,求第k優解; 思路: 和0-1揹包相似,就是陣列加了多一維,不同的是對於第i個物品選和不選的問題,0-1揹包中是直接求的max(dp[j],d[j-w[i]]+v[i]);而在這裡因為要求第k優解,需要將選(mv[])和不
SDNUOJ1033採藥(0-1揹包)
Description 辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了一個難題。醫師把他帶到一個到處都是草藥的山洞裡對他說:“孩子,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給
Chip Factory(0 1字典樹 刪除)
時間限制: 5 Sec 記憶體限制: 128 MB
尋找和為定值的多個數 (0-1 揹包)
題目描述 輸入兩個整數n和sum,從數列1,2,3.......n 中隨意取幾個數,使其和等於sum,要求將其中所有的可能組合列出來。 分析與解法 每個數都存在被選擇或不被選擇兩種可能,分類遞迴即可(分治思想) package main import "fmt" func S
採藥 OpenJ_Bailian - 2726(0-1揹包問題)
#include <stdio.h> #include <string.h> typedef struct Thing { int time, value; }Ting; Ting thing[11]; int
NYOJ 49 開心的小明(0-1揹包)
描述小明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說:“你的房間需要購買哪些物品,怎麼佈置,你說了算,只要不超過N 元錢就行”。今天一早小明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的N 元。於是,
HDU2955Robberies (0-1揹包問題)
題目大意: 一個人要搶劫銀行,在保證被抓概率小於某個預設的概率值時,儘可能搶到更多的錢。 輸入:第一行是一個整數t,代表測試用例的個數 接下來第一行是一個小數P和一個整數N,N代表銀行的個數,P代表概率的上限。 接下
9.29-貪心演算法(//活動安排//0-1揹包//裝載問題)
1.活動安排 描述:Jack是一名nwpu的大一新生,對學校舉辦的各種活動都十分的好奇,想盡可能多的參加這些活動。Npwu每天共有N項活動,其開始結束時間分別為B[i],E[i],(i = 1,2,……N) 請問Jack一天最多能參加幾項活動。當然,Jack在同一時間內只能
Bone Collector(0-1揹包)
Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as d
無頭單鏈表的操作(基於前面的修改版)
slist.h #pragma once #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<assert.h>
poj 1837 Balance (0 1 背包)
blue 0ms ack urn ont rgb int 平衡 plm Balance Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10326 Accepted: 6393
[POJ 2728]Desert King(0-1分數規劃/最優比率生成樹)
eat ice finall nec clu bool ann channels try Description David the Great has just become the king of a desert country. To win the respec
HIT1485 A Good Helper(0-1背包)
accepted num test case eof 做的 nbsp 心態 ive tor 終於補完第二次期末考了……果然考場上心態不好導致好多會做的題都沒時間寫 題目鏈接: http://acm.hit.edu.cn/hoj/problem/view?id=148
Shell特殊位置變量($0,$1$2,$*,$#,$$,$?,$@,${})
shell$0 文件名及路徑$1,$2 參數1,參數2$# 傳遞給腳本或函數的參數個數$$ 當前Shell進程ID$? 判斷上個命令的執行成功與否,0為成功。$@ 傳遞腳本或函數的所有參數$* 傳遞腳本或函數的所有參數${}註:$@和$*都是傳遞腳本或函數的所有參數。
跟著我從零開始入門FPGA(一周入門XXOO系列)-1、Verilog語法
部分 同步 比較 跑馬燈 begin 寫代碼 人的 thread get (本連載共七部分,這是第一部分) 作者:McuPlayer2013 (EETOP FPGA版塊版主) 原帖地址:http://bbs.eetop.cn/thread-385362-1-1.htm
(0.1)函數參數的定義方式
def 方式 模塊 聲明 對象 函數名 練習 直接 local 函數參數的定義方式:位置形參星號元組形參命名關鍵字形參雙星字典形參 1.位置形參語法: def 函數名(形參名1,形參名2,…………):語句塊 例子: len(args)) print
Flask:靜態文件&模板(0.1)
Go chrom 哪裏 emp .com .org 文檔 專業 查看 Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2 前面看了Flask的Quickstart文檔,可是,一直沒有練習裏面的內容,這不,剛剛練習完畢,來寫篇博文記錄一下!
Flask:cookie 和 session (0.1)
報錯 重要 doc alt 網站 本地 char 地址 3.6 Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2 Cookie是什麽?有什麽用? 某些網站為了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數據(通常經過加
如何判斷數據的每個字節的狀態(0/1)
int 可能 但是 sign 判斷 -c 取出 text 進行 在有些情況下想要進可能的節省空間,會把一個int或者char的每個字節位都進行賦值,讓每一個字節位都有各自的含義。如果想要取出來的話可以按照按位與的情況 求出char類型的每個字節的狀態按位與unsigned