link
/*
陣列沒開夠,爆零兩行淚
longlong開成int,爆零兩行淚
多組忘清空,爆零兩行淚
dp 沒初值,爆零兩行淚
深搜沒邊界,爆零兩行淚
廣搜忘出隊,爆零兩行淚
輸入沒加 &,爆零兩行淚
模數沒看見,爆零兩行淚
-1 不輸出,爆零兩行淚
越界不特判,爆零兩行淚
線段樹開一倍,爆零兩行淚
無向變有向,爆零兩行淚
題意沒審清,爆零兩行淚
檔名起錯,爆零兩行淚
除錯忘刪除,爆零兩行淚
沒用freopen,爆零兩行淚
*/#include
using namespace std;
const
int n=
200012
;int n,m;
int q[n]
;int f[n]
;int w[n]
;int
main()
int res=
2147483647
;for
(int i=n-m+
1;i<=n;i++
) res=
min(res,f[i]);
cout
}/*f[i] 表示1~i所有點滿足要求,且第i個烽火台被點燃的最小代價
(i-m,i-m+1,i-m+2,...,i-2,i-1)
f[i]=上面這一坨的最小代價 + 點燃第i個烽火台的代價
我們需要求i-m到i-1區間的最小值,考慮用單調佇列維護
q存的是區間最小代價的下標
*/
AcWing 1089 烽火傳遞
link 陣列沒開夠,爆零兩行淚 longlong開成int,爆零兩行淚 多組忘清空,爆零兩行淚 dp 沒初值,爆零兩行淚 深搜沒邊界,爆零兩行淚 廣搜忘出隊,爆零兩行淚 輸入沒加 爆零兩行淚 模數沒看見,爆零兩行淚 1 不輸出,爆零兩行淚 越界不特判,爆零兩行淚 線段樹開一倍,爆零兩行淚 無向變有...
AcWing 1089 烽火傳遞
題目傳送門 以i結尾的f i 滑動視窗的區間是 i m,i 1 單調佇列維護的是該區間的最小值,由於滑動視窗不包含i,因此f i 需要在while上方進行更新 include using namespace std const int inf 0x3f3f3f3f const int n 20001...
烽火傳遞 單調佇列
烽火台又稱烽燧,是重要的軍事防禦設施,一般建在險要或交通要道上。一旦有敵情發生,白天燃燒柴草,通過濃煙表達資訊 夜晚燃燒乾柴,以火光傳遞軍情,在某兩座城市之間有n個烽火台,每個烽火台發出訊號都有一定代價。為了使情報準確地傳遞,在連續m個烽火台中至少要有乙個發出訊號。請計算總共最少花費多少代價,才能使...