DP Occult的卡片公升級計畫 校OJ2389

2021-08-20 04:32:01 字數 1227 閱讀 8397

occult喜歡玩一款手遊,手遊中有很多好看的卡片。他想要公升級這些卡。

現在他有m塊經驗石,目標是強化一張卡片,卡片最開始的時候是0級,卡片會公升級,而公升級所需的經驗會越來越多。

假設卡片滿級是n級,給出a[1],a[2]....a[n],a[i]表示從i-1級公升到i級所需的經驗石數量。保證a[1]+a[2]+...+a[n]=m,且a[1]<=a[2]<=..<=a[n]。

然而每次強化是要付錢的,並且每次加的經驗石的數量是有限的,最多為10個。

每一次強化要付的金錢等於這一次加的經驗石的數量乘上當前卡片的等級。

occult想知道要把這張卡片從0級公升到滿級最少需要支付多少金錢。

例如輸入:

2 15

5 10

表示卡片滿級是

2級,現在有

15塊經驗石。第

0級公升到第

1級所需的經驗石數量是

5個,第

1級公升到第

2級所需的經驗石數量是

10個。

我們可以採取以下公升級策略,使得支付的金錢最少:

[第一次強化]

加4個經驗石。這次強化的費用:0級×4個石頭=0元。強化之後公升到了0級。

[第二次強化]

加10個經驗石。這次強化的費用:0級×10個石頭=0元。強化之後公升到了1級。

[第三次強化]

加1個經驗石。這次強化的費用:1級×1個石頭=1元。強化之後公升到了2級。

強化完畢,把三次的花費加起來,是1元。

多組測試資料。

每組測試資料第一行輸入n,m。(0

對於每組測試資料,輸出卡片從0級公升到滿級需要支付的最少金錢。

2 15

5 10

1

#include using namespace std;

const int mn=100010;

const long long inf=1e18;

int n,m;

int a[mn],s[mn];

long long dp[mn];

int main()

for(int i=0;i<=m;i++)

dp[i]=inf;

dp[0]=0;

for(int i=1;i<=m;i++)

}printf("%lld\n",dp[m]);

} return 0;

}

貝殼找房 丟失的卡片

有一疊 編號為1 n的卡片。吹落了一張。輸入剩餘n 1張卡編號中0 9出現的次數。次數不大於300 輸出卡片數目n和吹落卡片的編號。如果吹落卡片的解不唯一,從小到大排 輸入樣例 2 12 9 3 3 3 3 2 2 2 輸出樣例 26 12 26 21 晚上又寫了一段 基本思路是 0.check了0...

五彩繽紛的卡片

description tom有許多的卡片有四種顏色分別為red green blue yellow 隨機拿出n張卡片排成一列,為美觀,tom想替換掉相連相同顏色卡片 input 第一行輸入乙個整數n,表示n個字元,接著輸入 r g b y 中的乙個字元表示第i張卡片的顏色 output 輸出需要替...

百度筆試 牛牛的卡片

牛牛有n張卡片,每張卡片要麼是0,要麼是5,牛牛能從其中選出若干張卡片,然後組成一些數字,現在請找出所有的可能的數字裡面能整除90的最大的數字,不存在則輸出 1。問題實質 如果乙個數字裡面的數的出現次數的累加和是9的倍數,那麼他就可以被9整除。這題是90,只要我們在這個數末尾加0就可以了。code ...