日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

线性结构 —— 单调栈与单调队列

發布時間:2025/3/17 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线性结构 —— 单调栈与单调队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【單調棧】

1.原理

單調棧,就是棧內元素保持一定單調性(單調遞增或單調遞減)的棧,即從棧底到棧頂單調遞增或遞減。

對于單調遞增的棧,如果棧為空或入棧元素值大于等于棧頂元素值,則入棧;否則,若入棧會破壞棧的單調性,因此需要將比入棧元素的元素全部出棧。

對于單調遞減的棧,如果棧為空或入棧元素值于等于棧頂元素值,則入棧;否則,若入棧會破壞棧的單調性,因此需要將比入棧元素的元素全部出棧。

以下圖單調遞減的棧為例,從棧頂到棧底初始元素為:6、4、2、1

當插入的元素小于等于棧頂元素時,滿足單調遞減的條件,可直接加入棧,例如:插入元素 0,可直接加到棧頂

當插入的元素大于等于棧頂元素時,為滿足單調遞減的性質,需要從棧頂開始,將比入棧元素小的值全部彈出再入棧,例如:插入元素 3,需要先將 1、2 彈出

2.應用

單調棧常用的應用有:

  • 給定一組數,對于某個數,找到從左/右遍歷第一個比它小/大的元素的位置
  • 給定一組數,針對每個數,尋找其與其左/右第一個比它小/大的數之間有多少個數
  • 給定一序列,尋找某一子序列,使得子序列中的最小值乘以子序列的長度最大
  • 給定一序列,尋找某一子序列,使得子序列中的最小值乘以子序列所有元素和最大

3.實現

1)單調遞增棧

stack<int> S;for(int i=1;i<=n;i++){while(!S.empty()&&a[S.top()]>a[i]){//棧不為空且棧頂元素大于入棧元素時S.pop();//將棧頂大于入棧元素的元素出棧...//更新結果}S.push(i);//元素入棧 }

2)單調遞減棧

stack<int> S;for(int i=1;i<=n;i++){while(!S.empty()&&a[S.top()]<a[i]){//棧不為空且棧頂元素小于入棧元素時S.pop();//將棧頂小于入棧元素的元素出棧...//更新結果}S.push(i);//元素入棧 }

【單調隊列】

1.原理

單調隊列就是從隊首到隊尾滿足單調性的隊列,與單調棧極其相似,其基本原理與單調棧相同,只需將單調棧先進后出的性質改為先進先出的性質即可。?

對于單調遞增的隊列,若隊列為空或入隊元素 x 于等于隊尾元素,則入隊;否則,入隊會破壞隊列的單調性,因此需要將隊尾中比入隊元素 x 的元素全部出隊。

對于單調遞減的隊列,若隊列為空或入隊元素 x 于等于隊尾元素,則入隊;否則,入隊會破壞隊列的單調性,因此需要將隊尾中比入隊元素 x 的元素全部出隊。

2.應用

單調隊列的常用應用有:

  • 給出一組數,求這組數中第一個大/小于等于一個數 x 的數
  • 維護單調性,從而解決區間內最小/大的問題
  • 解決滑動窗口問題
  • 優化多重背包 DP、斜率優化?DP

3.實現

單調隊列一般使用 STL 的 deque(雙端隊列) 實現即可,由于雙端隊列即可再隊首操作又可在隊尾操作,那么這樣的性質就彌補了單調棧只可在尾端操作的不足,使得首段也有了一定的限制。

1)單調遞增隊列

deque<int> Q://雙端隊列 for(int i=1;i<=n;i++){while((!Q.empty())&&Q.back()>A[i]){//隊列不為空且隊尾元素大于入隊元素時Q.pop_back();//將隊列尾端大于入隊元素的元素出隊...//更新結果}q.push_back(A[i]);//元素入隊...//更新結果 }

2)單調遞減隊列?

deque<int> Q://雙端隊列 for(int i=1;i<=n;i++){while((!Q.empty())&&Q.back()<A[i]){//隊列不為空且隊尾元素小于入隊元素時Q.pop_back();//將隊列尾端小于入隊元素的元素出隊...//更新結果}q.push_back(A[i]);//元素入隊...//更新結果 }

【例題】

  • City Skyline(POJ-3044)(單調棧):點擊這里
  • Bad Hair Day(POJ-3250)(單調棧):點擊這里
  • Largest Rectangle in a Histogram(HDU-1506)(左右兩次單調棧):點擊這里
  • Passing the Message(HDU-3410)(左右兩次單調棧):點擊這里
  • Non-negative Partial Sums(HDU-4193)(單調隊列):點擊這里
  • Second My Problem First(HDU-3706)(單調隊列):點擊這里
  • Beauty Of Unimodal Sequence(HDU-6592)(LIS+單調棧):點擊這里

總結

以上是生活随笔為你收集整理的线性结构 —— 单调栈与单调队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一区二区三区日韩视频 | 无套内谢少妇高潮免费 | 中文字幕人妻一区二 | 欧美不卡在线视频 | 农村脱精光一级 | 成人免费看片载 | 97色综合 | 日韩h视频| 亚洲日本va中文字幕 | 国产精品视频成人 | 久久久久久久国产精品美女 | 女生下面流水视频 | 色哟哟视频网站 | 人人干网站 | 黄色在线视频网址 | 奶波霸巨乳一二三区乳 | 成人av中文解说水果派 | 人人澡人人插 | 日韩城人视频 | 在线视频 中文字幕 | 二级毛片| 永久黄网站 | 不卡视频免费在线观看 | av大片免费在线观看 | 亚洲高清影院 | 狠操av | 一区二区三区四区五区av | 瑟瑟网站免费 | 亚洲男人在线天堂 | 久久久久久国产精品免费播放 | 亚洲国产精品电影 | 最好看的2019年中文在线观看 | 亚洲精品一区二区三区蜜桃 | av免费观看网站 | 国产三级一区二区 | 草莓视频18免费观看 | 欧美一级网址 | 老司机av福利 | 亚洲色图吧 | 免费黄色激情视频 | 葵司免费一区二区三区四区五区 | 性开放网站 | 亚洲国产黄 | 尤物久久 | av免费亚洲| 激情全身裸吻胸 | 一区二区三区视频在线观看免费 | 天天爽夜夜爽夜夜爽精品 | 天堂999 | 黄色视屏在线看 | 特黄特色大片免费视频大全 | 中文字幕无码人妻少妇免费 | 青青青国产在线 | 在线免费看毛片 | 91大神福利视频 | 亚洲免费一区二区 | 亚洲二区在线 | 久久亚洲电影 | 久久精品国产77777蜜臀 | 欧美日韩国产成人精品 | 中文字幕在线观看视频网站 | 激情另类视频 | 天天天天天操 | 国产特级aaaaaa大片 | 国产视频一区二区在线播放 | 欧美视频a | 毛片久久久久久久 | 五月婷婷激情网 | 1024国产视频 | 成人激情免费 | 日本久久免费 | 欧美理伦片在线播放 | 国产成人免费观看 | 少妇做爰xxxⅹ性视频 | 久久爰| 国产盗摄一区二区 | 色戒电影未测减除版 | 午夜精品久久久久久久久久久久久 | 亚洲av无码电影在线播放 | 久久大陆 | 极品粉嫩小仙女高潮喷水久久 | 国产精品久久亚洲 | 日本污视频在线观看 | 亚洲不卡在线视频 | 一区二区三区不卡视频在线观看 | 精品无码一区二区三区的天堂 | 男女无遮挡免费视频 | 悟空影视大全免费高清观看在线 | 天天射一射 | 欧美日韩精品一区二区三区四区 | 少妇一级淫片免费放 | 精品国产自在精品国产精小说 | 美女久久久 | 亚洲午夜久久久久久久久久久 | 波多野结衣av电影 | 亚洲色鬼 | 97视频在线| 亚洲麻豆一区 | 中文字幕 成人 |