單調佇列優化DP 烽火傳遞

2021-10-02 06:11:47 字數 989 閱讀 7668

烽火台是重要的軍事防禦設施,一般建在交通要道或險要處。

一旦有軍情發生,則白天用濃煙,晚上有火光傳遞軍情。

在某兩個城市之間有 n 座烽火台,每個烽火台發出訊號都有一定的代價。

為了使情報準確傳遞,在連續 m 個烽火台中至少要有乙個發出訊號。

現在輸入 n,m 和每個烽火台的代價,請計算在兩城市之間準確傳遞情報所需花費的總代價最少為多少。

輸入格式

第一行是兩個整數 n,m,具體含義見題目描述;

第二行 n 個整數表示每個烽火台的代價 ai。

輸出格式

輸出僅乙個整數,表示最小代價。

資料範圍

1 ≤n

,m≤2

×105

1≤n,m≤2×10^5

1≤n,m≤

2×10

5,0 ≤a

i≤

1000

0≤a_i≤1000

0≤ai​≤

1000

輸入樣例:

5 31 2 5 6 2

輸出樣例:

4我們讀題可以知道這道題就是乙個滑動區間求最值問題。我們假設f[i]為已經選到前i個烽火台並且沒有選擇第i 個的代價。所以狀態轉移方程顯然就是f[i]=f[佇列隊頭]+w[i]。因為我們單調佇列維護的是最小值。所以我們隊頭一定是最小的。

#include

using

namespace std;

const

int n=

2e5+7;

int a[n]

,q[n]

,f[n]

;int

main()

int ans=

0x3f3f3f3f

;for

(int i=n-m+

1;i<=n;i++

) ans=

min(ans,f[i]);

cout<}

DP 單調佇列優化 DP 烽火傳遞

題目 烽火傳遞 做法 動態規劃 單調佇列 狀態表示 f i f i f i 表示前 i ii 個烽火台並點燃第 i ii 個烽火台的最小合法代價。狀態轉移 f i f i f i m in min min,最後掃瞄隊尾 m mm 個 f i f i f i 的值 這樣就可考慮到第 i ii 個不點燃...

烽火傳遞 單調佇列 DP

描述 烽火台又稱烽燧,是重要的防禦設施,一般建在險要處或交通要道上。一旦有敵情發生,白天燃燒柴草,通過濃煙表達資訊 夜晚燃燒乾柴,以火光傳遞軍情。在某兩座城市之間有n個烽火台,每個烽火台發出訊號都有一定的代價。為了使情報準確的傳遞,在m個烽火台中至少要有乙個發出訊號。現輸入n m和每個烽火台發出的訊...

Jzoj1771 烽火傳遞 單調佇列優化dp

烽火台又稱烽燧,是重要的軍事防禦設施,一般建在險要或交通要道上。一旦有敵情發生,白天燃燒柴草,定代價。為了使情報準確地傳遞,在連續m個烽火台中至少要有乙個發出訊號。請計算總共最少花費多少代價,才能使敵軍來襲之時,情報能在這兩座城市之間準確傳遞。輸入格式 第一行 兩個整數n,m。其中n表示烽火台的個數...