NOIP2011 觀光公交 貪心 遞推

2021-08-25 22:12:08 字數 1483 閱讀 4342

傳送門

60%資料:也許能用dp

100%資料:k範圍太大,不能dp

題解:想一想貪心。如果只有乙個加速器,我們肯定選乘坐人數最多的那條路。

擴充套件到m個加速器的情況,只需要每次選取乘坐人數最多的路,使用加速器更新答案,就行了。

對於乙個站,可以分成兩種情況:車等人,人等車。

因此,使用乙個加速器,只會對這個站及之後連續的所有的人等車的站下車的人的時間造成影響。

具體看**吧這個複雜度簡直玄學

資料太水了~還是我太菜了

#include

#include

using

namespace std;

const

int maxn =

1001

;const

int maxm =

10001

;const

int inf =

0x7fffffff

;int d[maxn]

, f[maxn]

;int t[maxm]

, begin[maxm]

, end[maxm]

;int last[maxn]

, come[maxn]

, out[maxn]

;int range[maxn]

, sum[maxn]

;inline

intread()

while

(ch >=

'0'&& ch <=

'9')

return k * f;

}int

main()

for(

int i =

1; i <= m; i++

)for

(int i =

1; i <= n; i++)

come[1]

=0, last[n]

= inf;

for(

int i =

2; i <= n; i++

)int ans =0;

for(

int i =

1; i <= m; i++

)// printf("ans = %d\n", ans);

while

(k--

)else

}int maxn =

0, k;

for(

int i =

1; i < n; i++)}

if(maxn ==0)

break

; d[k]--;

ans -

= maxn;

for(

int i = k +

1; i <= n; i++)}

printf

("%d"

, ans)

;return0;

}

NOIP2011 觀光公交(貪心)

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

NOIP2011 觀光公交

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

NOIP2011 觀光公交

傳送門 luogu 有點麻煩,幸好 o n 2 能過。貪心地想一想,我們如果要用加速器,肯定是要選擇車上人數最多的時段加速。但是我們就會面臨這樣的情況 那麼我們就分類討論一下,預處理一些東西 每個站的下車人數,需要更新的車到站時間,每個站的最後乙個下車人數。然後隨便搞一下就好了。include in...