大暴力 HAOI 2012音量調節

2022-06-04 05:03:09 字數 1518 閱讀 1888

題目:[haoi]2012音量調節

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

吉他手想以最大的音量演奏最後一首歌,你的任務是找到這個最大音量是多少。

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

第二行依次為n個整數:c1,c1,...,cn。

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

輸入                   

3 5 10 

5 3 7

輸出10

輸入4 8 20

15 2 9 10

輸出-1

1≤n≤50,1≤ci≤maxlevel,1≤maxlevel≤1000,0≤beginlevel≤maxlevel 。

閱讀完此題,立刻想到正解:dp。等等,這資料規模有點小啊……50*1000的時間複雜度,完全可以接受,二話不說,上大暴力!兩個陣列滾動著來,尋找前一次可以達到的音量,然後+當前曲子可調節音量,以此類推……但是剛開始沒有看完題目,結果忘了輸出-1,還有就是有一點紕漏,第二次時手抖打錯了乙個變數,結果第一次通過的點都沒過,第一次沒過的都過了………………

ac**:

program zht;

vari,j,n,m,p,c:longint;

bh1,bh2:array[-10000..10000] of longint;

begin

assign(input,'changingsounds.in');

assign(output,'changingsounds.out');

reset(input);

rewrite(output);

readln(n,p,m);

for i:=0 to 1000 do

begin

bh1[i]:=maxlongint;

bh2[i]:=maxlongint;

end;

bh1[p]:=0;

for i:=1 to n do

begin

read(c);

for j:=0 to m do

if bh1[j]=i-1 then begin bh2[j+c]:=i; bh2[j-c]:=i end;

for j:=0 to 1000 do

bh1[j]:=bh2[j];

end;

for j:=m downto 0 do

if bh1[j]=n then begin writeln(j); exit; end;

writeln('-1');

close(input);

close(output);

end.

}

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首歌開始之前吉他手想要改變的音量是多少。吉他手想以最大的音量演奏最後一...