風景迷人的小城y 市,擁有n 個美麗的景點。由於慕名而來的遊客越來越多,y 市特意安排了一輛觀光公交車,為遊客提供更便捷的交通服務。觀光公交車在第 0 分鐘出現在 1號景點,隨後依次前往 2、3 、4 ……n 號景點。從第 i 號景點開到第 i+1 號景點需要 di 分鐘。任意時刻,公交車只能往前開,或在景點處等待。
設共有m 個遊客,每位遊客需要乘車1 次從乙個景點到達另乙個景點,第i 位遊客在ti 分鐘來到景點 ai ,希望乘車前往景點bi (ai假設乘客上下車不需要時間。
乙個乘客的旅行時間,等於他到達目的地的時刻減去他來到出發地的時刻。因為只有一輛觀光車,有時候還要停下來等其他乘客,乘客們紛紛抱怨旅行時間太長了。於是聰明的司機zz給公交車安裝了 k 個氮氣加速器,每使用乙個加速器,可以使其中乙個 di 減1 。對於同乙個di 可以重複使用加速器,但是必須保證使用後di 大於等於0 。
那麼zz該如何安排使用加速器,才能使所有乘客的旅行時間總和最小?
輸入格式:
輸入檔名為bus.in。
第1 行是3 個整數n, m, k ,每兩個整數之間用乙個空格隔開。分別表示景點數、乘客數和氮氣加速器個數。
第2 行是n-1 個整數,每兩個整數之間用乙個空格隔開,第i 個數表示從第i 個景點開往第i+1 個景點所需要的時間,即 di 。
第3 行至m+2 行每行3 個整數 ti, ai, bi,每兩個整數之間用乙個空格隔開。第 i+2 行表示第i 位乘客來到出發景點的時刻,出發的景點編號和到達的景點編號。
輸出格式:
輸出檔名為bus.out。共一行,包含乙個整數,表示最小的總旅行時間。
輸入樣例#1:
3 3 21 40 1 3
1 1 2
5 2 3
輸出樣例#1:
10
【輸入輸出樣例說明】
對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 ≤ t i ≤ 500;
對於60% 的資料,1 ≤ n ≤ 100,1 ≤ m ≤ 1,000,0 ≤ k ≤ 100 ,0 ≤ di ≤ 100,0 ≤ t i ≤ 10,000 ;
對於100%的資料,1 ≤ n ≤ 1,000,1 ≤ m ≤ 10,000 ,0 ≤ k ≤ 100,000,0 ≤ di ≤ 100 ,0 ≤ t i ≤ 100,000。
noip2011提高組day2第3題
/*貪心,字首和記錄一段區間內的遊客數量,每次選擇遊客數量最多的區間進行加速
*/#include
#include
#define maxn 10001
using
namespace
std;
int n,m,k,d[1001],tim[maxn],st[maxn],ed[maxn],car[1001],g[1001],t[1001],sum[1001
];int
ans,fast,mx;
intmain()
for(int i=2;i<=n;i++)sum[i]+=sum[i-1
]; car[
1]=t[1
];
for(int i=2;i<=n;i++)car[i]=max(car[i-1],t[i-1])+d[i-1
];
for(int i=1;i<=m;i++)ans+=(car[ed[i]]-tim[i]);
while(k--)
ans-=mx;d[fast]--;
for(int i=2;i<=n;i++)car[i]=max(car[i-1],t[i-1])+d[i-1
]; }
printf(
"%d\n
",ans);
}
洛谷P1315 觀光公交
題目 模擬 貪心 一開始看到10 5的資料,以為要klogn就敲了個線段樹上去 結果沒考慮後效性,只過了3個點 正解 一開始先處理出每一站的到站時間是對的,而隨著修改到站時間的改變不一定滿足字首關係 假設在某一站有人很晚才出發,那不管先前改變了多少後面的到站時間都是不變的 綜上 還需要維護修改一段距...
洛谷P1315 觀光公交
題目 如果沒有氮氣加速器,則該題為乙個模擬題。但是本題存在氮氣加速器,所以我們需要考慮貪心策略。題目要求我們使所有人等待的時間最短,因此我們需要算出每段路徑 路徑即為車站之間的 d 對時間的貢獻多少,取其中最多的減去就好了。首先我們需要求出每個車站最遠向右影響到什麼地方,然後算出這段地方的影響總人數...
洛谷P1315 觀光公交
sb貪心.暴露了我 能力巨弱的本質。題面解 首先我們應該想到dp 但是我想到了貪心.然後分析題目本質,每個點有個限制,最早開走時間不得早於最晚上車時間。然後我們就可以把每個人看做都在那個時間上車。然後我們發現,對乙個地方使用加速,會影響它後面一段區間。然後就有個暴力 雛形是列舉在某個點用加速,看它能...