ssl1326 08年東莞特長生 工作

2021-08-17 03:16:25 字數 2449 閱讀 9154

2023年東莞特長生

之 工作

這次翻譯的主角是zy!轉眼2年過去了,zy被踢出機房,於是找了個遊戲。每天zy會知道乙個限時活動,清單上列出了n個可能需要他肝排名榜的活動。每個活動包含3個資訊:ti、ai、bi,ti表示肝此活動需要的時間,ai表示此活動的開啟時間,bi表示此活動的關閉時間。在某一時刻若zy手上沒有可肝的活動,那麼他可以選擇乙個已經開啟且還能夠在bi時刻之前(或者恰好在bi時刻)完成的活動來肝(因為如果時間不夠的話,肝到死也拿不到排行榜前幾的獎勵啊)。

由於zy有點懶(畢竟肝只有乙個嘛),他想盡量少的減少他的總遊戲時間,但是他不能在可以肝活動的時候故意不肝(這樣會被萌新(dalao)嘲笑的》_<),那麼他該如何挑選活動來肝呢?

你的任務就是求出zy的最少遊戲時間(即總共有多少時間zy在肝活動)。

紀念zy,r.i.p(2016~2018)

下面為原題:

這次故事的主角是hg!轉眼4年過去了,hg本科畢業了,於是找了份工作。每天hg會收到乙份任務清單,清單上列出了n個可能需要他完成的任務。每個任務包含3個資訊:ti、ai、bi,ti表示完成此任務需要的時間,ai表示此任務的到達時間,bi表示此任務的最晚完成時間。在某一時刻若hg手上沒有任務,那麼他可以選擇乙個已經到達且還能夠在bi時刻之前(或者恰好在bi時刻)完成的任務來做。

由於hg有點懶(純屬虛構:d),他想盡量少的減少他的總工作時間,但是他不能在可以做任務的時候故意不做(這樣會被炒魷魚的》_<),那麼他該如何挑選任務來做呢?

你的任務就是求出hg的最少工作時間(即總共有多少時間hg在做任務)。

第一行乙個整數n表示任務數。

以下n行,每行三個整數ti,ai,bi。(n<=1000,0<=ai,bi<=1500,ti>=1)

輸出僅乙個數,即最少工作時間。

3 15 0 25

50 0 90

45 15 70

ti>=1,0<=ai,bi<=1200;

30%的資料滿足n<=5;60%的資料滿足n<=500;100%的資料滿足n<=1000。

輸入資料保證bi-ai要大於等於ti,且小於2ti。

elba

本題屬於動態規劃題,f[i]表示從開始時刻工作到第i時刻初(或者說是第i-1時刻末),當前空閒,目前最少工作時間是多少。

然後用f[i]去更新後面的時間點就行了。o(∩_∩)o~~

接下來就可以推出動態規劃方程:f[i+t[j]]:=min(f[i]+t[j],f[i+t[j]])但注意!(づ ̄3 ̄)づ由樣例中,我們可以知道,hg做了第二項工作後就無法做完第三項!所以我們需要判斷當前時間做此任務做不做得完(當然也要判斷這個任務開啟沒有)

最後,當他i時刻為空閒時,我們可以用i時刻的工作時間去更新i+1時刻的工作時間

var

t,a,b,f:array[0..1100]of longint;

n,i,j,s,e:longint;

v:boolean;

function

min(a,b:longint):longint;//動態規劃

begin

if athen

exit(a);

exit(b);

end;

function

max(a,b:longint):longint;

begin

if a>b then

exit(a);

exit(b);

end;

begin

s:=maxlongint;

read(n);

for i:=1

to n do

begin

read(t[i],a[i],b[i]);

s:=min(a[i],s);//找起點

e:=max(b[i],e);//找終點

end;

for i:=s to e do f[i]:=maxlongint;//用來縮小範圍

f[s]:=0;//一開始沒有工作過

for i:=s to e do

if f[i]<>maxlongint then

//f[i]一定要被更新過,否則無法更新後面的時間

begin

v:=true;//當前空閒

for j:=1

to n do

if (a[j]<=i) and (i+t[j]<=b[j]) then

//如果當前時間有任務開啟,而且做得完,就不得不去做

begin

v:=false;//沒空啦!~~(╯﹏╰)b

f[i+t[j]]:=min(f[i]+t[j],f[i+t[j]]);//更新做完這個任務後的時間點

end;

if v then f[i+1]:=min(f[i+1],f[i])//更新下乙個時刻

end;

write(f[e]);

end.

2023年東莞特長生 散步

description 李四是乙個很會利用時間的學生,他經常晚上吃過飯後一邊思考問題一邊散步,由於要思考問題,並且思考問題的內容越來越多,所以他在散步時也是越來越慢的,他自己總結出乙個規律,他散步時第一步走n厘公尺,第二步走n 1厘公尺,以後每步比前一步少1厘公尺,最後一步是0時就停下來了。現在給出...

08年東莞特長生 獎金

08年東莞特長生 獎金 time limit 1000ms memory limit 65536k total submit 326 accepted 108 description 由於無敵的凡凡在2005年世界英俊帥氣男總決選中勝出,yali company總經理mr.z心情好,決定給每位員工發...

08年東莞特長生 獎金 題解

題目 由於無敵的凡凡在2005年世界英俊帥氣男總決選中勝出,yal iyali yali c om pany company compan y總經理mr.zmr.z mr.z 心情好,決定給每位員工發獎金。公司決定以每個人本年在公司的貢獻為標準來計算他們得到獎金的多少。於是m r.zmr.z mr....