acm第十六次單調佇列

2021-09-20 13:15:30 字數 789 閱讀 7042

單調佇列
一、單調佇列:佇列中元素之間的關係具有單調性,而且,隊首和隊尾都可以進行出隊操作,只有隊尾可以進行入隊操作

二、單調佇列的常用操作如下:

①插入:若新元素從隊尾插入後會破壞單調性,則刪除原來的隊尾元素,直到插入後不再破壞單調性為止,再將其插入單調佇列。(一般用倆個指標指位置,front=0指隊首,rear指末尾的指標)

(核心**:

int rear=-1,front=0;//r為末尾的指標,f為隊首的

for(int i=0;i=front&&q[rear]<=a)rear–;//單調遞減序列

q[++rear]=a;

ans+=rear;

)②獲取最優值:訪問首尾元素。

三、整理歸納單調佇列的一般解題步驟:

1、維護區間最值;

2、去除冗雜狀態(在隊尾插入每插入乙個就要從隊尾開始往前去除冗雜狀態) ;

3、保持佇列單調(最大值是單調遞減序列,最小值是單調遞增序列);

4、最優選擇在隊首。

四、插入操作例子

例如一組數(1,3,2,1,5,6),進入單調不減佇列的過程

1入隊,得到佇列(1);

3入隊,得到佇列(1,3);

2入隊,這時,隊尾的的元素3>2,將3從隊尾彈出,新的隊尾元素1<2,不用彈出,將2入隊,得到佇列(1,2);

1入隊,2>1,將2從隊尾彈出,得到佇列(1,1);

5入隊,得到佇列(1,1,5);

6入隊,得到佇列(1,1,5,6);

最終結果1,1,5,6

2018 9 9第十六次筆記

這次筆記學習函式。我們一直都接觸這main函式,乙個函式中只能有乙個函式,就是這個主函式main,也可以自己定義,但是要宣告函式,先看個例子 函式的學習 include 先對自己定義的函式進行函式宣告 int add int a,int b intsub int a,int b int mul in...

2019 3 第十六次CCF CSP認證心得

第一題大致就是求n個整數中位數。是個送分題,但是題目描述如果中位數是分數,則四捨五入後保留小數點後一位。真心沒懂,難道一些整數的中位數不是只會是整數或者x.5兩種情況麼,我應該沒有理解錯中位數和平均數吧。第二題求中綴表示式,題目描述中說所有的乘號用小寫x代替我是後來才知道的。應該只能得30分了。能不...

acm 單調佇列

單調佇列 佇列中元素之間的關係具有單調性,而且,隊首和隊尾都可以進行出隊操作,只有隊尾可以進行入隊操作。操作 1 插入 若新元素從隊尾插入後會破壞單調性,則刪除隊尾元素,直到插入後不再破壞單調性為止,再將其插入單調佇列。2 獲取最優 最大 最小 值 訪問首尾元素。原理 在處理時,去掉不和諧的狀態,使...