烽火傳遞
description
烽火台又稱烽燧,是重要的防禦設施,一般建在險要處或交通要道上。一旦有敵情發生,白天燃燒柴草,通過濃煙表達資訊:夜晚燃燒乾柴,以火光傳遞軍情。在某兩座城市之間有n個烽火台,每個烽火台發出訊號都有一定的代價。為了使情報準確的傳遞,在m個烽火台中至少要有乙個發出訊號。現輸入n、m和每個烽火台發出的訊號的代價,請計算總共最少需要話費多少代價,才能使敵軍來襲之時,情報能在這兩座城市之間準確的傳遞!!!
input format
第一行有兩個數n,m分別表示n個烽火台,在m個烽火台中至少要有乙個發出訊號。
第二行為n個數,表示每乙個烽火台的代價。
output format 一
個數,即最小代價。
樣例5 31 2 5 6 2
4時間限制 time limitation
各個測試點1s
注釋 hint
1<=n,m<=1,000,000
表示被這題坑了快3個多小時了,主要還是dp沒學好啊,最後乙個for迴圈很巧妙,之前想了好久都沒想到這點,還用了兩個單調佇列。。。悲劇阿。。。
#include #include #include #include #include #define max ((1<<31)-1)
using namespace std;
int value[1000010],q[1000010],dp[1000010]=;
int main()
// for(i=1;i<=n;i++)
// printf("%d\n",dp[i]);
for(i=n;i>=n-m+1;i--)
printf("%d\n",ans);
return 0;
}
單調佇列DP 斜率DP
考慮到知識點是單調佇列,考慮怎麼使用單調佇列 首先說明一點,小天使可以選擇當前時刻鋼琴是否移動 並非一次就要一段時間 考慮dp方程,由於每次只能走乙個方向,選擇不了,其實就相當於乙個一維的dp了 以往上 北 為例 t為第t段時間 f t i j max 變形為 f t i j max i 然後把 f...
dp單調佇列(詳解)
我們從最簡單的問題開始 給定乙個長度為n的整數數列a i i 0,1,n 1和窗長度k.要求 f i max,i 0,1,n 1 問題的另一種描述就是用乙個長度為k的窗在整數數列上移動,求窗裡面所包含的數的最大值。解法一 很直觀的一種解法,那就是從數列的開頭,將窗放上去,然後找到這最開始的k個數的最...
單調佇列 優化DP
佇列元素保持單調遞增 減 而保持的方式就是通過插隊,把隊尾破壞了單調性的數全部擠掉,從而使佇列元素保持單調。單調佇列的作用 優化dp。許多單調佇列優化的dp可以使複雜度直接降維,下面就以最簡單的一道題為例 在某兩座城市之間有 n 個烽火台,每個烽火台發出訊號都有一定代價。為了使情報準確地傳遞,在連續...