[數論記錄]P1587 [NOI2016] 迴圈之美
阿新 • • 發佈:2022-12-02
單調棧是棧中資料具有單調性的一種資料結構,用來求以某個值為最值的最大區間等問題
模板(c++):
int n,in; int stack[1010]; int top; func(){ for(int i=0;i<n;i++){ scanf("%d",&in); while(top>0&&in>=stack[top])top--;//>=就是從棧底到棧頂單增 /*加入自己需要的功能*/ stack[top++]=in; } }
單調佇列
也許是單調棧puls?
從隊首到隊尾的資料是單調的,解決區間內最值問題等問題
模板(c++):
#include<iostream> #include<deque> using namespace std; deque<int>que;//該模板的que只儲存下標,要根據需要修改 int n,m; int in[2000005]; int main(){ scanf("%d %d",&n,&m); for(int i=1;i<=n;i++){ scanf("%d",&in[i]); } for (int j = 1; j <= m; j++) { while (que.size() > 0 && que.front() <= j - k) {//更新區間 que.pop_front(); } while (que.size() > 0 && in[i][que.back()] < in[i][j]) {//控制佇列的單調性 que.pop_back(); } que.push_back(j);//將當前下標加入佇列 /*加入功能*/ return 0; }
我覺得我大學學習的一個誤區可能就是太把自己當回事了
其實那些深奧的知識在學習的時候沒有必要要研究透原理,只要會用就行,先跟答案抄兩遍,會寫就行。
原理什麼的,等會寫以後再悟會簡單很多。
2022.12.5 in HHUC