單調棧玩法 烽火台

2021-09-25 07:41:34 字數 1073 閱讀 1100

具體問題是:

n 個 烽火台圍成乙個圈,任意兩個烽火台只要中間的烽火台比他們兩個都低就能看見彼此,當然相鄰的肯定能看見對面,求能看見彼此的對數。

我們第一步就是找出這一圈數值中的最大值。為什麼?因為這樣我們就能確保後面的數向左至少和最大值能配成一對烽火台,我們只要觀察右邊的即可。

//前面迴圈可知value是最大值,將最大值的次數和值大小壓入棧中

stack.push(new pair(value));

while(index!=maxindex)

else

}} return res;

} public static int nextindex(int size,int i)

//因為是環,所以設定了size確定是否到達底部,未達到就i+1,達到了就置為0,說明到達了開頭

public static long getinternalsum(int n)

public static class pair }

public static void main(string args) ;

system.out.println(communications(arr));

}

資料結構 單調棧 烽火台

戰爭遊戲的至關重要環節就要到來了,這次的結果將決定王國的生死存亡,小b負責首都的防衛工作。首都處於乙個四面環山的盆地中,周圍的n個小山構成乙個環,作為預警措施,小b計畫在每個小山上設定乙個觀察哨,日夜不停的瞭望周圍發生的情況。一旦發生外敵入侵事件,山頂上的崗哨將點燃烽煙。若兩個崗哨所在的山峰之間沒有...

烽火傳遞 單調佇列

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

《單調佇列》3 烽火傳遞

正如度娘說了 由於單調佇列的隊頭每次一定最小值,故查詢為o 1 進隊出隊稍微複雜點 進隊時,將進隊的元素為e,從隊尾往前掃瞄,直到找到乙個不大於e的元素d,將e放在d之後,捨棄e之後的所有元素 如果沒有找到這樣乙個d,則將e放在隊頭 此時佇列裡只有這乙個元素 出隊時,將出隊的元素為e,從隊頭向後掃瞄...