演算法競賽入門經典 例題9 5

2021-10-03 19:03:55 字數 1398 閱讀 7647

uva 12563

jin ge jin qu hao

這題的背景我也是服了。。。

這是乙個揹包問題,可以簡述為有n首歌,每首歌只能唱1次,要求在所剩不多的t秒內,唱盡可能多的歌,同時唱得盡可能的長。這樣即使最後只剩1秒,點一首超長的就能多唱好久。??

按照給定歌曲的順序,依次決定要不要唱這首歌就好了。如果不唱,總數目不變,總時間也不變;如果唱,會用掉一定的時間,對後面的選擇有影響,所以應該把時間也考慮進來,因此用sung[s][t]表示已經對第s首歌進行了選擇,同時用掉的時間為t時能唱的最大數目,遞推公式為sung[s][t] = max(sung[s - 1][t], sung[s - 1][t - len[s]] + 1),前一項表示不唱,後一項表示唱。

因為這道題還要求出實際唱歌時間,並且在唱得一樣多的情況下唱得盡可能得長,即在決定唱,雖然不能多唱但是可以延長時間的情況下更新實際唱歌時間。

#include

#include

using

namespace std;

void

findmaximumsung

(const vector<

int>

&vilength,

const

int time)

for(size_t s =

1; s < song; s++

)else

if(sung[s]

[t].first == sung[s -1]

[t - vilength[s]

].first +1)

}}}}

int maxtime =

0, maxsung =0;

for(size_t t = time; t >

0; t--

)else

if(sung[song -1]

[t -1]

.first == maxsung)}}

cout << maxsung +

1<<

' '<< maxtime +

678<< endl;

}int

main()

cout <<

"case "

<< test +

1<<

": "

;findmaximumsung

(vilength, t);}

return0;

}/*23 100

60 70 80

3 100

30 69 70

*/

演算法競賽入門經典例題

7744問題 問題 輸出所有形如aabb的四位完全平方數 即前兩位數字相等,後兩位數字也相等 include include int main 開燈問題 include include define maxn 1010 int a maxn int main int n,k,first 1 mems...

演算法競賽入門經典 例題4 1

uva1339 ancient cipher 題目意思為判斷明文是否可以經過位置變換以及字母替換得到密文。因為不需要輸出替換方案,只判斷存在性,那就先不考慮搜尋。位置變換不用考慮,因為只要長度一樣,就肯定能逆回去,關鍵是字母替代。可以把明文和密文先進行排序,然後看模式是否相同,比如題目中第一組測試資...

演算法競賽入門經典 例題4 5

uva512 spreadsheet tracking 給定乙個 和一些操作序列,輸出給定單元格在這些操作後的位置。如果在整個 上模擬操作,那麼就需要記錄原始 和最終 中每乙個單元格的對應關係,比如可以通過給單元格內容編號,新加入的單元格編號全0,刪除原始單元格則編號全部改 1,最後在整個 中搜尋原...