洛谷 P1230 智力大衝浪

2022-05-01 19:09:16 字數 2147 閱讀 7712

小偉報名參加**電視台的智力大衝浪節目。本次挑戰賽吸引了眾多參賽者,主持人為了表彰大家的勇氣,先獎勵每個參賽者m元。先不要太高興!因為這些錢還不一定都是你的?!接下來主持人宣布了比賽規則:

首先,比賽時間分為n個時段(n≤500),它又給出了很多小遊戲,每個小遊戲都必須在規定期限ti前完成(1≤ti≤n)。如果乙個遊戲沒能在規定期限前完成,則要從獎勵費m元中扣去一部分錢wi,wi為自然數,不同的遊戲扣去的錢是不一樣的。當然,每個遊戲本身都很簡單,保證每個參賽者都能在乙個時段內完成,而且都必須從整時段開始。主持人只是想考考每個參賽者如何安排組織自己做遊戲的順序。作為參賽者,小偉很想贏得冠軍,當然更想贏取最多的錢!注意:比賽絕對不會讓參賽者賠錢!

輸入格式:

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

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

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

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

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

輸出格式:

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

輸入樣例1

10000

74 2 4 3 1 4 6

70 60 50 40 30 20 10

輸出樣例1 

誒喲,剛看到這題時,還覺得挺簡單的:哇,不就是個貪心加排序嗎?結果,做錯啦tat!

本題思路:

因為要讓小偉獲得的獎金最多,就應該從扣款數多的小遊戲開始玩兒~所以呢,a表示遊戲規定完成的期限,b表示不能在規定期限前完成的扣款數,c表示這個小遊戲有沒有玩過。我們可以把b陣列從大到小排乙個序,然後列舉b[i],能完成這個遊戲就完成這個遊戲,這醬紫就可以就可以讓小偉扣掉的獎金最少啦~

下面根據我的受到的教訓,總結一下這題需要注意的:

一、可以使用結構體(這是最好),可惜懶惰加奇葩的我就是不願意,非要用陣列(還要手寫快排qaq)

二、(dalao可以略過,細心的童鞋也可以略過)純屬小粗心,輸入的時候一定要分兩個for迴圈來做啊,不要像我一樣,一開始只用了乙個迴圈tat,找了10多分鐘,才發現錯誤555~

下面貼上本蒟蒻的**:

無注釋版:

#include#include

#include

#include

#include

using

namespace

std;

intans,n;

int a[1001],b[1001

];bool flag[1001

];void quicksort(int l,int

r) }

while (i<=j);

if (iquicksort(i,r);

if (j>l)

quicksort(l,j);

}int

main()}}

for (int i=1;i<=n;i++)

ans=ans-b[i];

cout

return0;

}

#include#include

#include

#include

#include

using

namespace

std;

intans,n;

int a[1001],b[1001

];bool flag[1001

];//判斷該時段有沒有玩過遊戲

void quicksort(int l,int

r)//快速排序

}while (i<=j);

if (iquicksort(i,r);

if (j>l)

quicksort(l,j);

}int

main()}}

for (int i=1;i<=n;i++)

ans=ans-b[i];//計算獎金

cout

return0;

}

希望各位能在裡面學到些東西~(然而是不可能的qwq)

我的部落格:

本文版權歸作者和共有,歡迎**,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。

洛谷P1230智力大衝浪

小偉報名參加 電視台的智力大衝浪節目。本次挑戰賽吸引了眾多參賽者,主持人為了表彰大家的勇氣,先獎勵每個參賽者m元。先不要太高興!因為這些錢還不一定都是你的?接下來主持人宣布了比賽規則 首先,比賽時間分為n個時段 n 500 它又給出了很多小遊戲,每個小遊戲都必須在規定期限ti前完成 1 ti n 如...

洛谷 P1230 智力大衝浪

洛谷 p1230 智力大衝浪 小偉報名參加 電視台的智力大衝浪節目。本次挑戰賽吸引了眾多參賽者,主持人為了表彰大家的勇氣,先獎勵每個參賽者m元。先不要太高興!因為這些錢還不一定都是你的?接下來主持人宣布了比賽規則 首先,比賽時間分為n個時段 n 500 它又給出了很多小遊戲,每個小遊戲都必須在規定期...

洛谷 P1230 智力大衝浪

解題思路 利用結構體儲存每一種遊戲的時期和價值,按照時間從小到大 相同時期價值從大到小 排序 然後依次掃瞄n種遊戲並計時 如果當前的遊戲完成時間 計時器時間 則在計時器時間內能夠完成該遊戲,則直接統計該遊戲,計時器 否則 在 計時器 時間上不能完成該遊戲,則搜尋計時器以前完成的遊戲中是否存在價值最小...