題目描述
jl報名參加lcyz的智力大衝浪節目。本次挑戰賽吸引了眾多參賽者,主持人為了表彰大家的勇氣,先獎勵每個參賽者m元。先不要太高興!因為這些錢還不一定都是你的?!接下來主持人宣布了比賽規則:
首先,比賽時間分為n個時段(n≤500),它又給出了很多小遊戲,每個小遊戲都必須在規定期限ti前完成(1≤ti≤n)。如果乙個遊戲沒能在規定期限前完成,則要從獎勵費m元中扣去一部分錢wi,wi為自然數,不同的遊戲扣去的錢是不一樣的。當然,每個遊戲本身都很簡單,保證每個參賽者都能在乙個時段內完成,而且都必須從整時段開始。主持人只是想考考每個參賽者如何安排組織自己做遊戲的順序。作為參賽者,jl很想贏得冠軍,當然更想贏取最多的錢!注意:比賽絕對不會讓參賽者賠錢!
輸入 共4行。
第1行為m,表示一開始獎勵給每位參賽者的錢;
第2行為n,表示有n個小遊戲;
第3行有n個數,分別表示遊戲1到n的規定完成期限;
第4行有n個數,分別表示遊戲1到n不能在規定期限前完成的扣款數。
輸出 僅1行。表示jl能贏取最多的錢。
樣例輸入
10000
7 4 2 4 3 1 4 6
70 60 50 40 30 20 10
樣例輸出
9950
一道貪心水題,一開始被自己的**卡了好久,基本思路就是貪心,後來在網上看別人的部落格時發現他們竟然對價值排序,很不理解,總之我是按時間排序,先做能做的。時間一樣按價值排序,先做扣錢多的。然後重點來了,乙個簡單的500範圍,直接n方暴力就好,我們對乙個新遍歷到的遊戲,發現如果無法完成,那麼我們就遍歷之前完成過的所有遊戲,找乙個花費最少的,然後與新遊戲比較,取花費最小的捨去,給了選擇乙個反悔的機會。這樣每次取最優解,一旦發現有任務完成不了,就找乙個做過的遊戲來比較,替換。這樣保證我們每次捨去的都是乙個最小花費。並且捨去的遊戲不再作為參考項,因為按時間排序,所有待選項必須都在當時的時間下可以被完成,要麼我用之前完成過其他遊戲的時間完成後來的任務,要麼我不要後來的任務,就按順序做好之前能做的任務,這是按時間排序過的,捨去的,就已經過了時間,失去了反悔的機會。
需要注意的是,我們遍歷的是已經做過的遊戲,那麼對於沒有做過的遊戲我們不做遍歷,因此要對做過的遊戲做乙個標記,並且在後來的取捨中。被取到的遊戲要標記,被捨去的遊戲要取消標記。以便後來的遍歷中,仍然可以拿此次的選擇作為捨去的待選項。
#include
#include
#include
#include
#define ll long long
using
namespace
std;
struct node
a[506];
bool vis[506];
bool cmp(node a,node b)
else
else m-=a[i].w;
}i++;
// printf("%d*****%d\n",a[i].t,m);
}printf("%d\n",m<0?0:m);
}}/*
1000
91 1 1 3 4 5 2 2 2
30 60 90 100 100 100 30 60 90
3000
81 2 2 3 4 4 4 4
10 10 10 10 100 100 100 100
*/
UPC 多項式的輸出
題目描述 一元 n 次多項式可用如下的表示式表示 其中,aixi稱為 i 次項,ai 稱為 i 次項的係數。給出乙個一元多項式各項的次數和係數,請按照如下規定的格式要求輸出該多項式 f x anxn an 1xn 1 a1x a0,an 0 多項式中自變數為 x,從左到右按照次數遞減順序給出多項式。...
UPC6358 庭師的利刃
時間限制 1 sec 記憶體限制 128 mb 提交 651 解決 117 提交 狀態 討論版 命題人 admin 題目描述 作為白玉樓的庭師,妖夢雖然不會n刀流,但是卻領悟了生命二刀流。然而我也是個劍的收藏者,家裡屯著n把劍,每一把劍都有乙個靈魂值a i 由於一些劍之間可能有共鳴,所以我需要兩把契...
upc 6358庭師的利刃
時間限制 1 sec 記憶體限制 128 mb 提交 729 解決 145 提交 狀態 討論版 命題人 admin 題目描述 作為白玉樓的庭師,妖夢雖然不會n刀流,但是卻領悟了生命二刀流。然而我也是個劍的收藏者,家裡屯著n把劍,每一把劍都有乙個靈魂值a i 由於一些劍之間可能有共鳴,所以我需要兩把契...