2019 CSP J 紀念品(完全揹包 思維)

2021-10-07 23:56:40 字數 1810 閱讀 3351

題目描述

小偉突然獲得一種超能力,他知道未來t

tt天n

nn種紀念品每天的**。某個紀念品的**是指購買乙個該紀念品所需的金幣數量,以及賣出乙個該紀念品換回的金幣數量。每天,小偉可以進行以下兩種交易 無限次:

任選乙個紀念品,若手上有足夠金幣,以當日**購買該紀念品;

賣出持有的任意乙個紀念品,以當日**換回金幣。

每天賣出紀念品換回的金幣可以立即用於購買紀念品,當日購買的紀念品也可以當日賣出換回金幣。當然,一直持有紀念品也是可以的。t

tt 天之後,小偉的超能力消失。因此他一定會在第t

tt天賣出所有紀念品換回金幣。小偉現在有m

mm枚金幣,他想要在超能力消失後擁有盡可能多的金幣。

輸入格式

輸入第一行包含三個正整數t,n

,m

t,n,m

t,n,

m,相鄰兩數之間以乙個空格分開,分別代表未來天數 t

tt,紀念品數量n

nn,小偉現在擁有的金幣數量mmm。

接下來t

tt行,每行包含n

nn個正整數,相鄰兩數之間以乙個空格分隔。第i

ii行的n

nn個正整數分別為 pi,

1,pi

,2,…

…,pi

,n

p_, p_, \ldots \ldots ,p_

pi,1​,

pi,2

​,……

,pi,

n​,其中pi,

jp_

pi,j

​​表示第 i

ii 天第 j

jj 種紀念品的**。

t

≤100,n

≤100,m

≤103

t \leq 100,n \leq 100,m \leq 10^3

t≤100,

n≤10

0,m≤

103,所有**1≤p

i,j≤

10

41 \leq p_ \leq 10^4

1≤pi,j

​≤10

4輸出格式

輸出僅一行,包含乙個正整數,表示小偉在超能力消失後最多能擁有的金幣數量。

分析此題雖然是完全揹包,但是很不容易發現如何解題,最大的坑點就是如果非要考慮手上有多少個某種物品,那就gg了。

實際上無需考慮手上有多少物品。每天的獲利由與前一天的**差決定,而手頭有多少物品完全可以等價為手頭的金幣,然後我們只需要確定賣多少物品即可得到在這一天能獲利多少,然後可能會考慮到某天買或者不買,實際上這也是不需要考慮的,因為如果我們計算出每天能獲得的最大價值w

ww,那麼下一天手上的金幣數量就是[0,

w]

[0,w]

[0,w

],因為我們會列舉金幣數目,這也就能從手頭所有可能的金幣數目。

總的來說,是將手頭的金幣看做揹包容量,物品當天的價值看做物品體積,和下一天的差價看做物品價值。此題比較難想的一天是對前t−1

t-1t−

1天每天dp。

#include .h>

using namespace std;

const

int maxn=

2e5+10;

int a[

105]

[105];

int d[maxn]

;int

main()

for(

int i=

1;i)printf

("%d\n"

,m);

return0;

}

紀念品分組

問題描述 元旦快到了,校學生會讓樂樂負責新年晚會的紀念品發放工作。為使得參加晚會的同學所獲得的紀念品價值 相對均衡,他要把購來的紀念品根據 進行分組,但每組最多只能包括兩件紀念品,並且每組紀念品的 之和不能超過乙個給定的整數。為了保證在盡量短的時 間內發完所有紀念品,樂樂希望分組的數目最少。你的任務...

紀念品分組

time limit 1 sec memory limit 128 mb submit 4 solved 2 submit status web board 元旦快到了,校學生會讓樂樂負責新年晚會的紀念品發放工作。為使得參加晚會的同學所獲得 的紀念品價值相對均衡,他要把購來的紀念品根據 進行分組,但...

紀念品分組

題目描述 元旦快到了,校學生會讓樂樂負責新年晚會的紀念品發放工作。為使得參加晚會的同學所獲得 的紀念品價值相對均衡,他要把購來的紀念品根據 進行分組,但每組最多只能包括兩件紀念品,並且每組紀念品的 之和不能超過乙個給定的整數。為了保證在盡量短的時間內發完所有紀念品,樂樂希望分組的數目最少。你的任務是...