1139 觀光公交

2022-05-03 15:51:27 字數 2345 閱讀 2208

2023年noip全國聯賽提高組

時間限制: 1 s

空間限制: 128000 kb

題目等級 : ** gold

題解檢視執行結果

風景迷人的小城 y 市,擁有n 個美麗的景點。由於慕名而來的遊客越來越多,y 市特意安排了一輛觀光公交車,為遊客提供更便捷的交通服務。觀光公交車在第0 分鐘出現在1號景點,隨後依次前往2、3、4……n 號景點。從第i 號景點開到第i+1 號景點需要di 分鐘。任意時刻,公交車只能往前開,或在景點處等待。

設共有 m 個遊客,每位遊客需要乘車1 次從乙個景點到達另乙個景點,第i 位遊客在ti 分鐘來到景點ai,希望乘車前往景點bi(ai那麼 zz 該如何安排使用加速器,才能使所有乘客的旅行時間總和最小?

輸入描述 input description

第 1 行是3 個整數n, m, k,每兩個整數之間用乙個空格隔開。分別表示景點數、乘客數和氮氣加速器個數。

第 2 行是n-1 個整數,每兩個整數之間用乙個空格隔開,第i 個數表示從第i 個景點開往第i+1 個景點所需要的時間,即di。

第 3 行至m+2 行每行3 個整數ti, ai, bi,每兩個整數之間用乙個空格隔開。第i+2 行表示第i 位乘客來到出發景點的時刻,出發的景點編號和到達的景點編號。

輸出描述 output description

共一行,包含乙個整數,表示最小的總旅行時間。

樣例輸入 sample input

3 3 2

1 40 1 3

1 1 2

5 2 3

樣例輸出 sample output

資料範圍及提示 data size & hint

對 d2 使用2 個加速器,從2 號景點到3 號景點時間變為2 分鐘。

公交車在第 1 分鐘從1 號景點出發,第2 分鐘到達2 號景點,第5 分鐘從2 號景點出發,第7 分鐘到達3 號景點。

第 1 個旅客旅行時間 7-0 = 7 分鐘。

第 2 個旅客旅行時間 2-1 = 1 分鐘。

第 3 個旅客旅行時間 7-5 = 2 分鐘。

總時間 7+1+2 = 10 分鐘。

資料範圍

對於 10%的資料,k=0;

對於 20%的資料,k=1;

對於 40%的資料,2 ≤ n ≤ 50,1 ≤ m≤ 1,000,0 ≤ k ≤ 20,0 ≤ di ≤ 10,0 ≤ ti ≤ 500;

對於 60%的資料,1 ≤ n ≤ 100,1 ≤ m≤ 1,000,0 ≤ k ≤ 100,0 ≤ di ≤ 100,0 ≤ ti ≤ 10,000;

對於 100%的資料,1 ≤ n ≤ 1,000,1 ≤ m ≤ 10,000,0 ≤ k ≤ 100,000,0 ≤ di ≤ 100,0 ≤ ti ≤ 100,000。

分類標籤 tags 點此展開 

大陸地區

noip全國聯賽提高組

2023年

題解:

本題為noip2011提高組day2第三題,其實這道題雖然被放在第三題但它僅僅只需要乙個貪心就好,我們首先記錄下來到每一站下車的人數,然後列舉每乙個加速器,由於每個乘客的旅行時間只與他到達的時間與下車的時間有關,因此,我們在列舉每乙個加速器的時候,只需要把能夠造福最多人的那一段路加速即可,於是我們可以記錄每一段路所造福的人數,我們暫定每個景點的出發時間為需要從該景點上車的最晚到達的乘客,那麼到達時間即為上乙個景點的出發時間或到達時間更大的乙個值加上從上乙個景點到該景點所需要的時間。如果某個景點的出發時間小於到達時間,那麼說明若在這段旅程中使用加速器,能夠造福到下乙個景點下車的人。通過這個,我們就可以貪心了,然後每次貪心完之後都更新到達景點的時間即可。為了方便計算,我在初始化的時候把所有人的到達景點的時間都減去,這樣就不用最後再減了,就可以直接求需要在每個景點下車的人數*到達該景點的時間的和就行了。

ac**:

#includeusing

namespace

std;

#define n 11000

intd[n],num[n],data[n],tim[n],last[n];

intn,m,k,ans,max1,cct;

intmain()

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

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

}max1=0

;

for(int j=2;j<=n;j++)

}d[cct]--;

for(int j=cct;j<=n;j++)

}for(int i=2;i<=n;i++)

printf(

"%d\n

",ans);

return0;

}

RQNOJ 658 觀光公交)

幾大注意點 1.一次使用氦氣加速器會把後面分成好幾段。2.我們僅維護end i wait i 恆定,因此需提前讓wait i max wait i 1 wait i 3.w i w i 1 w j 且w恆定,故可預處理sum i 滿足累加性 include include include inclu...

NOIP2011 觀光公交

題目 分析 設last i 表示來到第i個景點的乘客最晚的時間,time i 表示車到達第i個景點的最小時間。因為每個乘客到達的時間已經固定,所以要使總時間最小,就是使 time down i 最小,其中down i 代表每位乘客的目的地。先考慮不用加速器的情況。可以直接遞推求出答案,time i ...

P1315 觀光公交

風景迷人的小城y 市,擁有n 個美麗的景點。由於慕名而來的遊客越來越多,y 市特意安排了一輛觀光公交車,為遊客提供更便捷的交通服務。觀光公交車在第 0 分鐘出現在 1號景點,隨後依次前往 2 3 4 n 號景點。從第 i 號景點開到第 i 1 號景點需要 di 分鐘。任意時刻,公交車只能往前開,或在...