洛谷P1315 觀光公交

2022-03-17 15:29:25 字數 898 閱讀 8548

題目

如果沒有氮氣加速器,則該題為乙個模擬題。

但是本題存在氮氣加速器,所以我們需要考慮貪心策略。

題目要求我們使所有人等待的時間最短,因此我們需要算出每段路徑(路徑即為車站之間的\(d\))對時間的貢獻多少,取其中最多的減去就好了。首先我們需要求出每個車站最遠向右影響到什麼地方,然後算出這段地方的影響總人數。然後就能解出所有車站的的貢獻了,每個車站的貢獻在減去之後可能會變。所以要進行\(k\)次此操作,每次都找出最大的車站貢獻,然後更新答案。

#include #include #define int long long

using namespace std;

int n, m, k, ans;

int d[100050], resh[100050], _rea[100005];//resh表示i車站的出發時間, _rea表示i車站的到達時間, ha表示i向右最遠能夠影響到的車站。

int del[100050], sum[100005], ha[100050], temp[100005];

struct edg data[100050];

signed main()

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

}if (!maxn) break;

ans -= maxn;

d[maxk]--;//maxn是當前最多的車站所影響的人數。

_rea[1] = 0;

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

_rea[i + 1] = max(resh[i], _rea[i]) + d[i];

} printf("%lld", ans);

return 0;

}

洛谷P1315 觀光公交

題目 模擬 貪心 一開始看到10 5的資料,以為要klogn就敲了個線段樹上去 結果沒考慮後效性,只過了3個點 正解 一開始先處理出每一站的到站時間是對的,而隨著修改到站時間的改變不一定滿足字首關係 假設在某一站有人很晚才出發,那不管先前改變了多少後面的到站時間都是不變的 綜上 還需要維護修改一段距...

洛谷P1315 觀光公交

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

洛谷P1315 觀光公交

sb貪心.暴露了我 能力巨弱的本質。題面解 首先我們應該想到dp 但是我想到了貪心.然後分析題目本質,每個點有個限制,最早開走時間不得早於最晚上車時間。然後我們就可以把每個人看做都在那個時間上車。然後我們發現,對乙個地方使用加速,會影響它後面一段區間。然後就有個暴力 雛形是列舉在某個點用加速,看它能...