智算之道模擬賽 C 紀念品

2021-10-07 22:33:11 字數 1860 閱讀 1679

題目鏈結

小偉突然獲得一種超能力,他知道未來 t 天 n 種紀念品每天的**。某個紀念品的**是指購買乙個該紀念品所需的金幣數量,以及賣出乙個該紀念品換回的金幣數量。

每天,小偉可以進行以下兩種交易 無限次:

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

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

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

t 天之後,小偉的超能力消失。因此他一定會在第 t 天賣出所有紀念品換回金幣。

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

輸入第一行包含三個正整數 t,n,m,相鄰兩數之間以乙個空格分開,分別代表未來天數 t,紀念品數量 n,小偉現在擁有的金幣數量 m。

接下來 t 行,每行包含 n 個正整數,相鄰兩數之間以乙個空格分隔。第 i 行的 n 個正整數分別為 pi,

1,pi

,2,…

…,pi

,n

p_, p_, \ldots \ldots ,p_

pi,1​,

pi,2

​,……

,pi,

n​,其中 pi,

jp_

pi,j

​ 表示第 i 天第 j 種紀念品的**。

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

6 1 100

5020

2520

2550

305
3 3 100

10 20 15

15 17 13

15 25 16

217
比較明顯的完全揹包問題,容量即價值,每乙個物品的價值即後一天的**減現在的**,我們用 a[i

][j]

a[i][j]

a[i][j

] 記錄第 i

ii 天第 j

jj 個物品的**,dp[

k]

dp[k]

dp[k

] 表示花 k

kk 元獲得的最大收益,則有狀態轉移方程:

d p[

k]=m

ax(d

p[k]

,dp[

k−a[

i][j

]]+a

[i+1

][j]

−a[i

][j]

)dp[k]=max(dp[k],dp[k-a[i][j]]+a[i+1][j]-a[i][j])

dp[k]=

max(

dp[k

],dp

[k−a

[i][

j]]+

a[i+

1][j

]−a[

i][j

])ac**如下:

#include

using

namespace std;

typedef

long

long ll;

int t,n,m,a[

105]

[105

],dp[

10005

],ans=0;

intmain()

for(

int i=

1;i<=t;i++)}

m+=dp[m];}

printf

("%d"

,m);

return0;

}

2020智算之道複賽

共 5 個測試點 每個測試點 20 分 每個測試點限時 1 秒 執行記憶體上限 512mb 咕咕有兩個數字 a,b 它忘記了 a 的前三位 記除去前三位的 a 為 aa 但它記得 a 與 b 滿足 a 0 mod b 即 a 是 b 的倍數。請你幫它求出有多少種滿足條件的 a。注意 a 沒有前導 0...

智算之道 2020智算之道初賽第三場題解

乙個模擬的水題.int main return 0 這個b.卡的直接醉了 按照題意模擬即可 模擬建議使用雙端佇列deque 最好還是陣列吧,deque必須全域性才可以 被deque全域性卡了乙個小時40分鐘 第乙個坑點是注意摸牌順序 可能會wa 第二個坑點是處理摸牌順序 可能會t 第三個坑點是刪牌標...

智算之道 字串

思路 直接列舉字串s全排列顯然複雜度不允許,考慮到字元只有26種,那麼我們考慮貢獻。直接去列舉字串t長度為strlen s 的字串,看對應的字串s的每種字元個數是否一樣。一樣的話,看這個子串是不是被計算過,沒被計算過,對答案貢獻就加1。對於是否貢獻過,我們可以用map來存字串是否出現過,直接存字串比...