智力大衝浪

2022-08-17 10:21:16 字數 1259 閱讀 5987

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 2

3using

namespace

std;45

int m,n,f[501

];6 pair game[501];7

8int

main()

927 f[sub]=1;28

}29 cout

30return0;

31 }

view code

智力大衝浪

時間限制 1 sec 記憶體限制 128 mb 提交 112 解決 71 提交 狀態 討論版 小偉報名參加 電視台的智力大衝浪節目。本次挑戰賽吸引了眾多參賽者,主持人為了表彰大家的勇氣,先獎勵每個參賽者m元。先不要太高興!因為這些錢還不一定都是你的?接下來主持人宣布了比賽規則 首先,比賽時間分為n個...

智力大衝浪

智力大衝浪 riddle 記憶體限制 128m 題目描述 例 1 智力大衝浪 riddle.pas 題目描述 小偉報名參加 電視台的智力大衝浪節目。本次挑戰賽吸引了眾多 參賽者,主持人為了表彰大家的勇氣,先獎勵每個參賽者 m 元。先 不要太高興!因為這些錢還不一定都是你的。接下來主持人宣布了比 賽規...

智力大衝浪

傳送門 同樣是一道貪心題。我們能想到,肯定是要做那些扣錢最多的,所以我們先把扣錢的多少拍一下序,之後,我們一定是要把這件事情盡量拖後做的,這樣才能保證盡量不影響其他的事件。而如果這個時間已經被占用,那就盡量向前排,實在排不了的丟棄即可。看一下 include include include incl...