【智力大衝浪】
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 #include8 #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...