1. 程式人生 > 其它 >[數論記錄]P1587 [NOI2016] 迴圈之美

[數論記錄]P1587 [NOI2016] 迴圈之美

單調棧是棧中資料具有單調性的一種資料結構,用來求以某個值為最值的最大區間等問題

模板(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