1. 程式人生 > >【動態規劃——單調佇列維護】——烽火傳遞

【動態規劃——單調佇列維護】——烽火傳遞

用q[i]表示到i前面符合條件的最小代價為多少(要取到i)

單調佇列維護區間中q[i]的最小值

l,r表示單調佇列的隊首與隊尾

從1到n迴圈,若q[qj[r]]>q[i](隊尾比當前大)

彈出隊尾將當前放入

若qj[l]<i-m(長度大於要求)l++

最後更新一下q[i]=q[l]+a[i](符合要求區間中最小值加當前值為當前最小值)

答案在n—n-m+1中

#include<cstdio>

#include<cstring>
int a[300001];
int q[300001];
int qj[300001];
int n,m;
int main()
{
memset(a,0,sizeof(a));
memset(q,0,sizeof(q));
memset(qj,0,sizeof(qj));
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int l=1,r=0;
for(int i=1;i<=n;i++)
{
while(l<=r&&q[qj[r]]>=q[i-1])//由於放在前面做所以此處i-1(上次更新完並沒有加入單調佇列佇列)
{
r--;
}
qj[++r]=i-1;
if(qj[l]<i-m)
{
l++;
}
q[i]=q[qj[l]]+a[i];
}
int ans=10000000;
for(int i=n;i>=n-m+1;i--)
{
if(ans>q[i])
{
ans=q[i];
}
}
printf("%d",ans);
    return 0;
}

相關推薦

動態規劃——單調佇列維護——烽火傳遞

用q[i]表示到i前面符合條件的最小代價為多少(要取到i) 單調佇列維護區間中q[i]的最小值 l,r表示單調佇列的隊首與隊尾 從1到n迴圈,若q[qj[r]]>q[i](隊尾比當前大) 彈出隊尾將當前放入 若qj[l]<i-m(長度大於要求)l++

單調佇列DP烽火傳遞

** 1565 – 【堆練習】烽火傳遞3577 ** Description   烽火臺是重要的軍事防禦設施,一般建在交通要道或險要處。一旦有軍情發生,則白天用濃煙,晚上有火光傳遞軍情。在某兩個城市之間有n(n<=200000)座烽火臺,每個烽火臺發出訊號

2883 烽火傳遞 動態規劃+單調佇列

題目 烽火臺又稱烽燧,是重要的軍事防禦設施,一般建在險要或交通要道上。一旦有敵情發生,白天燃燒柴草,通過濃煙表達資訊;夜晚燃燒乾柴,以火光傳遞軍情,在某兩座城市之間有 n 個烽火臺,每個烽火臺發出訊號都有一定代價。為了使情報準確地傳遞,在連續 m 個烽火臺中至少要有一個發出訊號。請計

洛谷動態規劃/01背包P2925 [USACO08DEC]幹草出售Hay For Sale

ase GC def 算法分析 name ios source sep gis 【題目描述:】 約翰遭受了重大的損失:蟑螂吃掉了他所有的幹草,留下一群饑餓的牛.他乘著容量為C(1≤C≤50000)個單位的馬車,去頓因家買一些幹草. 頓因有H(1≤H≤5000)包幹草,每一包

HDU-2844 Coins 動態規劃DP+多重揹包

題目傳送門 題目:有n種硬幣,第i種硬幣的價值為Ai,數目為Ci,求這些硬幣能配出1~m中的幾種價值。 題解:dp[j]表示是否能配出價值j。sum[i][j]表示第i種硬幣取到價值j時需要的數目。sum陣列可以壓掉i的那一維,每次都要記得清零。 AC程式碼: #include

POJ-3666 Making the Grade 動態規劃DP+滾動陣列

題目傳送門 題目:輸入n個數,第i個數字的值為a[i],把第i個數變為j的代價為a[i]-j的絕對值,求把這n個數組成的數列變成單調數列的最小代價。 題解:dp[i][j]表示前i個數最大值為b[j]時的最小代價,即第i個數在總數列中的值為第j小的時候的最小代價。 動態轉移方程:dp

POJ-2392 Space Elevator 動態規劃DP+多重揹包

題目傳送門 題目:牛要去太空了!他們計劃通過建造一種太空升降機來達到軌道:一個巨大的積木塔。他們有K (1 <= K <= 400)不同型別的積木來建造塔。型別i的每個塊的高度都是h_i (1 <= h_i <= 100),並且數量上都是c_i (1 <= c_

HDU 1069.Monkey and Banana動態規劃(DP)8月15

A group of researchers are designing an experiment to test the IQ of a monkey. They will hang a banana at the roof of a building, and at the mean time, pr

AtCoder[ARC073F] Many Moves動態規劃優化+線段樹

題目描述: 有N個方格排成一排,它們按從左到右的順序被編號為1,2,…,N。 你有兩個硬幣,開始時分別被放在格A,B上,接下來你要按照順序完成Q次操作: 給定一個正整數xi,你要選出兩枚硬幣中的一枚移動到第xi格上。 注意,你需要花費1s的時間將硬幣移動

單調佇列動態規劃[CQBZOJ3059]Bead

題目描述 Alex 喜歡玩網路遊戲,認為這是智力和體力的綜合鍛鍊。在一次遊戲活動中, 他意外獲得了一個傳說中威力極其強大的法寶:珠鏈。 珠鏈,顧名思義,就是由許多小珠子串起來的一條鏈。珠子有很多種

Java滾動數組動態規劃UVA - 11137 - Ingenuous Cubrency

得到 lose math scanner light clas details 狀態 ann 滾動數組優化自己畫一下就明白了。 http://blog.csdn.net/u014800748/article/details/45849217 解題思路:本題利用遞推關系解決。

動態規劃 Codeforces Round #416 (Div. 2) C. Vladik and Memorable Trip

and main spa def esp 動態 return 價值 can 劃分那個序列,沒必要完全覆蓋原序列。對於劃分出來的每個序列,對於某個值v,要麽全都在該序列,要麽全都不在該序列。 一個序列的價值是所有不同的值的異或和。整個的價值是所有劃分出來的序列的價值之和。

動態規劃Codeforces Round #406 (Div. 2) C.Berzerk

[1] space node sca 一個 for 隊列 ber 動態規劃 有向圖博弈問題。 能轉移到一個必敗態的就是必勝態。 能轉移到的全是必勝態的就是必敗態。 轉移的時候可以用隊列維護。 可以看這個 http://www.cnblogs.com/quintessence

動態規劃CDOJ1271 Search gold

mage images sin class png http std ret urn 方格取數。 但由於題意說金幣數<0就死了,就不能繼續轉移。 #include<cstdio> #include<algorithm> #include&l

動態規劃最長公共子序列問題

clas == 搜索 ios for 參考 pan 公式 是否 題目描述: 給定兩個字符串s1s2……sn和t1t2……tn。求出這兩個字符串最長的公共子序列的長度。字符串s1s2……sn的子序列指可以表示為si1si2……sim(i1<i2<……<im)

TarjanLCA動態規劃推導hdu6065 RXD, tree and sequence

and main ack find turn hdu mes ear 高明 劃分出來的每個區間的答案,其實就是連續兩個的lca的最小值。 即5 2 3 4 這個區間的答案是min(dep(lca(5,2)),dep(lca(2,3),dep(lca(3,4))))。 於是d

動態規劃windy數

center log char enter tdi ++ getc windy數 ace BZOJ1026: [SCOI2009]windy數 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 7893 Solved: 3

DFS拓撲排序動態規劃Gym - 100642A - Babs' Box Boutique

關鍵字 dag 在一起 ems class std rst ++i box 給你10個箱子,有長寬高,每個箱子你可以決定哪個面朝上擺。把它們摞在一起,邊必須平行,上面的不能突出來,問你最多擺幾個箱子。 3^10枚舉箱子用哪個面。然後按長為第一關鍵字,寬為第二關鍵字,從大到小

原根動態規劃bitset2017四川省賽 K.2017 Revenge

iostream 我們 eset main pen 乘法 四川 動態 概論 題意: 給你n(不超過200w)個數,和一個數r,問你有多少種方案,使得你取出某個子集,能夠讓它們的乘積 mod 2017等於r。 2017有5這個原根,可以使用離散對數(指標)的思想把乘法轉化成加

Codeforces 949DShake It! 動態規劃

href 動態 ++ dot ref ima scanf ces c++ 參考: http://blog.csdn.net/gjghfd/article/details/77824901 所求的是滿足條件的圖中“不同構”的數量,意味著操作的順序是可以忽略的