problem description
小偉報名參加**電視台的智力大衝浪節目。本次挑戰賽吸引了眾多參賽者,主持人為了表彰大家的勇氣,先獎勵每個參賽者m元。先不要太高興!因為這些錢還不一定都是你的?!接下來主持人宣布了比賽規則:
首先,比賽時間分為n個時段(n≤500),它又給出了很多小遊戲,每個小遊戲都必須在規定期限ti前完成(1≤ti≤n)。如果乙個遊戲沒能在規定期限前完成,則要從獎勵費m元中扣去一部分錢wi,wi為自然數,不同的遊戲扣去的錢是不一樣的。當然,每個遊戲本身都很簡單,保證每個參賽者都能在乙個時段內完成,而且都必須從整時段開始。主持人只是想考考每個參賽者如何安排組織自己做遊戲的順序。作為參賽者,小偉很想贏得冠軍,當然更想贏取最多的錢!注意:比賽絕對不會讓參賽者賠錢!
input format
共4行。
第1行為m,表示一開始獎勵給每位參賽者的錢;
第2行為n,表示有n個小遊戲;
第3行有n個數,分別表示遊戲1到n的規定完成期限;
第4行有n個數,分別表示遊戲1到n不能在規定期限前完成的扣款數。
output format
僅1行。表示小偉能贏取最多的錢。
algorithm design
貪心演算法
problem analysis
不難想到盡量把每乙個活動都放在結束前一秒完成,為其他活動爭取更大的空間
這只是乙個理想的情況,有些活動不得不放棄,所以要優先完成扣款多的遊戲
既然如此,把扣款多的遊戲從多到少都盡量放在結束前1秒,把玩遊戲的時間標記,如果這個時間已經被占用,就往前移,直到無法放置,這個貪心法則絕對是正確的,因為每個遊戲最多占用1秒,一旦會導致後面某些遊戲玩不了,那麼即使不玩這個遊戲,後面的遊戲也最多只能玩1個,且扣更多的款
得證貪心法則:按遊戲扣款從多到少按時間從後往前完成
source code
1 #include 2view code3using
namespace
std;45
int m,n,f[501
];6 pair game[501];7
8int
main()
927 f[sub]=1;28
}29 cout
30return0;
31 }
智力大衝浪
時間限制 1 sec 記憶體限制 128 mb 提交 112 解決 71 提交 狀態 討論版 小偉報名參加 電視台的智力大衝浪節目。本次挑戰賽吸引了眾多參賽者,主持人為了表彰大家的勇氣,先獎勵每個參賽者m元。先不要太高興!因為這些錢還不一定都是你的?接下來主持人宣布了比賽規則 首先,比賽時間分為n個...
智力大衝浪
智力大衝浪 riddle 記憶體限制 128m 題目描述 例 1 智力大衝浪 riddle.pas 題目描述 小偉報名參加 電視台的智力大衝浪節目。本次挑戰賽吸引了眾多 參賽者,主持人為了表彰大家的勇氣,先獎勵每個參賽者 m 元。先 不要太高興!因為這些錢還不一定都是你的。接下來主持人宣布了比 賽規...
智力大衝浪
傳送門 同樣是一道貪心題。我們能想到,肯定是要做那些扣錢最多的,所以我們先把扣錢的多少拍一下序,之後,我們一定是要把這件事情盡量拖後做的,這樣才能保證盡量不影響其他的事件。而如果這個時間已經被占用,那就盡量向前排,實在排不了的丟棄即可。看一下 include include include incl...