智力大衝浪

2022-03-09 06:37:07 字數 1745 閱讀 7556

【智力大衝浪】

riddle

記憶體限制: 128m

【題目描述】

例 1 智力大衝浪(riddle.pas)。

【題目描述】

小偉報名參加**電視台的智力大衝浪節目。本次挑戰賽吸引了眾多

參賽者,主持人為了表彰大家的勇氣,先獎勵每個參賽者 m 元。先

不要太高興!因為這些錢還不一定都是你的。接下來主持人宣布了比

賽規則:

首先,比賽時間分為 n 個時段(n≤500),它又給出了很多小遊戲,每

個小遊戲都必須在規定期限 ti 前完成(1≤ti≤n)。如果乙個遊戲沒能

在規定期限前完成,則要從獎勵費 m 元中扣去一部分錢 wi, wi 為自

然數,不同的遊戲扣去的錢是不一樣的。當然,每個遊戲本身都很簡

單,保證每個參賽者都能在乙個時段內完成,而且都必須從整時段開

始。主持人只是想考考每個參賽者如何安排組織自己做遊戲的順序。

作為參賽者,小偉很想贏得冠軍,當然更想贏取最多的錢!

注意:比賽絕對不會讓參賽者賠錢!

【輸入】

輸入檔案 riddle.in,共 4 行。

第一行為 m,表示一開始獎勵給每位參賽者的錢;

第二行為 n,表示有 n 個小遊戲;

第三行有 n 個數,分別表示遊戲 1~n 的規定完成期限;

第四行有 n 個數,分別表示遊戲 1~n 不能在規定期限前完成的扣

數。【輸出】

輸出檔案 riddle.out,僅 1 行。表示小偉能贏取最多的錢。

【樣例輸入】

10000

74 2 4 3 1 4 6

70 60 50 40 30 20 10

【樣例輸出】

9950

題解:損失的最少,等價於先都減去再加回來,再跑一遍01揹包。

1 #include2 #include3 #include4 #include5 #include6 #include7 #include

8 #include9 #include10

#define inf 2147483647

11#define p(a) putchar(a)

12#define g() getchar()

13#define for(i,a,b) for(register int i=a;i<=b;i++)

14//

by war

15//

2017.10.24

16using

namespace

std;

17int

m;18

intn;

19//

int t[510];

20//

int v[510];

21int f[510

];22

intmax;

23struct

jl24

31 }a[510

];32

33void

in(int &x)

3443

while(c>='

0'&&c<='

9')x=x*10+c-'

0',c=g();

44 x*=y;45}

46void o(int

x)47

53if(x>9)o(x/10

);54 p(x%10+'0'

);55}56

intmain()

57

智力大衝浪

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

智力大衝浪

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

智力大衝浪

傳送門 首先解釋一下題意,所謂的時間段指的是 1 這個數字 內的任意個整數都可以做遊戲,花費1時間。很明顯這是一道貪心題,為了使得的錢盡可能多,就要使扣的錢盡可能少,因此要先安排扣錢多的遊戲。又為了盡量給後面的遊戲讓地方,先安排的遊戲要盡量選擇盡可能靠後的時間。include include usi...