牛客網 HAOI2012 音量調節

2021-09-29 22:01:02 字數 921 閱讀 6952

題目鏈結

第一行依次為三個整數:n, beginlevel, maxlevel。

第二行依次為n個整數:c1,c2,c3……cn。

輸出描述:

輸出演奏最後一首歌的最大音量。如果吉他手無法避免音量低於0或者高於maxlevel,輸出-1。

3 5 10

5 3 7

這個題目相信大家能看出來是屬於揹包問題,但應用到具體卻有些無從下手,我也是。

但自己仔細去發現是應從dp[1][beginlever]開始,之後列舉所有滿足條件的情況即 c[i] + j <= maxlever; j - c[i] > 0,陣列dp[i][j]為乙個標記的作用,真正尋找的是下標 j 。

不多說,上**:

#include

#include

using

namespace std;

int n, beginlever, maxlever, dp[

1024][

1024]=

, c[

1024];

//dp 實際上為乙個標記陣列, 能取到、不能取到

intmain()

// 找出所有滿足可能的情況,然後再滿足情況中找出 max

for(

int i = maxlever; i >=0;

--i)

if(dp[n +1]

[i])

printf

("-1");

return0;

}

HAOI2012 音量調節

音量用乙個整數描述。輸入檔案中整數beginlevel,代表吉他剛開始的音量,整數maxlevel,代表吉他的最大音量。音量不能小於0也不能大於maxlevel。輸入中還給定了n個整數c1,c2,c3,cn,表示在第i首歌開始之前吉他手想要改變的音量是多少。吉他手想以最大的音量演奏最後一首歌,你的任...

HAOI2012 音量調節

嘟嘟嘟 這道題只要狀態一想出來,這題就做完了。另 dp i j 表示 i 首歌音量 j 能否達到,則如果dp i 1 j 1,那麼dp i j c i dp i j c i 1.然後最後從max到0反向遍歷dp n i 即可。注意這題陣列要開2e3,否則因為j c i 陣列越界造成了一些詭異的錯誤,...

HAOI2012音量調節

音量用乙個整數描述。輸入檔案中給定整數beginlevel,代表吉他剛開始的音量,以及整數maxlevel,代表吉他的最大音量。音量不能小於0也不能大於maxlevel。輸入檔案中還給定了n個整數c1,c2,c3 cn,表示在第i首歌開始之前吉他手想要改變的音量是多少。吉他手想以最大的音量演奏最後一...