【動態規劃——單調佇列維護】——烽火傳遞
用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)
【Tarjan】【LCA】【動態規劃】【推導】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枚舉箱子用哪個面。然後按長為第一關鍵字,寬為第二關鍵字,從大到小
【原根】【動態規劃】【bitset】2017四川省賽 K.2017 Revenge
iostream 我們 eset main pen 乘法 四川 動態 概論 題意: 給你n(不超過200w)個數,和一個數r,問你有多少種方案,使得你取出某個子集,能夠讓它們的乘積 mod 2017等於r。 2017有5這個原根,可以使用離散對數(指標)的思想把乘法轉化成加
【Codeforces 949D】Shake It! 【動態規劃】
href 動態 ++ dot ref ima scanf ces c++ 參考: http://blog.csdn.net/gjghfd/article/details/77824901 所求的是滿足條件的圖中“不同構”的數量,意味著操作的順序是可以忽略的